Hallo Community,
heute bin ich mal wider auf ein seltsames Problem gestoßen!
Recht viel erklären kann ich leider nicht es ist ein kurzer Quellcode.
Warum wird der wert geändert wenn ich ein Objekt einer Klasse übergebe?
Warum wird der wert nicht geändert wenn ich einen normalen integer wert übergebe?
Ich habe mir dazu zusammengereimt, das es sein könnte, das bei der Zuweisung von einem Objekt einfach ein neuer Zeiger auf dem Objekt erstellt wird und bei primitiven Datentypen der wert kopiert wird aber warum ist das so?
Oder täusche ich mich bei dieser Erklärung?
Ich habe leider bis jetzt nichts gefunden das mir weiterhilft..
MFG
kiname
heute bin ich mal wider auf ein seltsames Problem gestoßen!
Recht viel erklären kann ich leider nicht es ist ein kurzer Quellcode.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
int zahl = 10;
Test t = new Test() { wert = 7 };
Aendern a = new Aendern(ref t);
a.add(12);
//t.wert ist jetzt 19
Aendern2 b = new Aendern2(ref zahl);
b.add(12);
//zahl ist immer noch 10
}
}
class Test
{
public int wert;
}
class Aendern
{
Test zahl;
public Aendern(ref Test zahl)
{
this.zahl = zahl;
}
public void add(int wert)
{
this.zahl.wert += wert;
}
}
class Aendern2
{
int zahl;
public Aendern2(ref int zahl)
{
this.zahl = zahl;
}
public void add(int wert)
{
this.zahl += wert;
}
}
}
Warum wird der wert nicht geändert wenn ich einen normalen integer wert übergebe?
Ich habe mir dazu zusammengereimt, das es sein könnte, das bei der Zuweisung von einem Objekt einfach ein neuer Zeiger auf dem Objekt erstellt wird und bei primitiven Datentypen der wert kopiert wird aber warum ist das so?
Oder täusche ich mich bei dieser Erklärung?
Ich habe leider bis jetzt nichts gefunden das mir weiterhilft..
MFG
kiname