Načeloma naj bi bil prenos objekta preko metode po referenci, ne?
Torej, če jz dam vrednostni tip od objekta v metodi kot parameter, naj bi se
vrednost v tem objektom spremenile in obdržale, ko se klic
metode konča. Ali se motim? Zakaj mi potem, ko dam vrednost od objekta
v metodo ne spremeni? Torej se vrednost v objektu ohrani v staro
vrednost, torej se naredi kopija te vrednosti....
Primer:
Primer:
namespace ReferenceTest
{
class Person
{
public int x = 10;
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
ChangeData(p.x);//spremeni vrednost
//izpise 10, ne 20
Console.WriteLine("Stevilo je:{0}",p.x);
Console.Read();
}
private static void ChangeData(int p)
{
p = 20;
}
}
}
Avtor: bojanv, objavljeno na portalu SloDug.si (Arhiv)
bojanv - sreda, 02. avgust 2006
Vrednostne tipe znam prenašat. Mislil sem, da je kaka finta, ker prenašam vrednost od objekta, torej p.x, da se to potem tudi prenese po referenci. Zdaj mi je jasno.... Thnx, Damir...
ExAmigan - sreda, 02. avgust 2006
Parameter metode ChangeData je int, ki je vrednosten. Pri tem ni bistveno to, da gre za člana referenčnega razreda. Želeno boš dosegel, če parameter preneseš po referenci: private static void ChangeData(ref int p) ali pa seveda, če preneseš referenčni tip: private static void ChangeData(Person p)