Reference u C#-u

poruka: 6
|
čitano: 3.348
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Reference u C#-u

Kako napraviti referencu na neki objekt u C#-u?

Trebao bi napraviti referencu na listu objekata korisnički definiranig razreda.

Guglanje nije dalo rezultata.

Moj PC  
0 0 hvala 0
15 godina
offline
Re: Reference u C#-u

pa ako imas listu ovako recimo:
List<KorisnickiDefRazred> lista = new List<KorisnickiDefRazred>();

Onda sve sto ti je potrebno je ovo:

List<KorisnickiDefRazred> referentnaLista = lista;

I sada ako budes menjao vrednost referentaLista mjenjaces i vrednosti originalne liste.

Uglavnom objekti koji se nalaze na Heapu tj. klase, kada ih pridruzujes sa znakom jedakosti kopira se samo referenca, a kada pridrizujes isto tako strukture onda se one kopiraju po vrijednosti, zato se i zovu klase Reference Type, a strukture Value Type.

isto tako mozes definirati metodu:
public void Metoda(List<KorisnickiDefRazred> lista);

i sada kada pozoves metodu i posaljes svoju listu kao argument

Metoda(lista);

svaka promjena te liste unutar metode ce rezultirati promjenom liste koju si poslao kao argument.

Eto to je to ako nesto ne shvacas ili nisam dobro objasnio samo pitaj..:D

Poruka je uređivana zadnji put pon 26.12.2011 14:49 (slobo14).
13 godina
neaktivan
offline
Re: Reference u C#-u

Moraš precizirati što hoćeš, praktički sve je referenca u C#-u.

15 godina
neaktivan
offline
Re: Reference u C#-u
slobo14 kaže...

pa ako imas listu ovako recimo:
List<KorisnickiDefRazred> lista = new List<KorisnickiDefRazred>();

Onda sve sto ti je potrebno je ovo:

List<KorisnickiDefRazred> referentnaLista = lista;

I sada ako budes menjao vrednost referentaLista mjenjaces i vrednosti originalne liste.

Uglavnom objekti koji se nalaze na Heapu tj. klase, kada ih pridruzujes sa znakom jedakosti kopira se samo referenca, a kada pridrizujes isto tako strukture onda se one kopiraju po vrijednosti, zato se i zovu klase Reference Type, a strukture Value Type.

isto tako mozes definirati metodu:
public void Metoda(List<KorisnickiDefRazred> lista);

i sada kada pozoves metodu i posaljes svoju listu kao argument

Metoda(lista);

svaka promjena te liste unutar metode ce rezultirati promjenom liste koju si poslao kao argument.

Eto to je to ako nesto ne shvacas ili nisam dobro objasnio samo pitaj..:D

 

The hell?

To mi je netko prije trebao reći. Pa kakvog smisla ima da se kad se napiše nešto = nešto2  to onda znači da je nešto referenca na nešto 2.

Ovog u C++-u nije bilo. Mislim da sad znam što je uzrokovalo bug u jednom mojem programu.

Ah, nemožeš ni zamislit koliko ovo komplicira stvari. Moram promjeniti cjeli način razmišljanja. Čija je to, pobogu, glupa ideja bila...

Kako da napravim da se sve vrjednosti jednog objekta kopiraju u drugi?

programabilan kaže...

Moraš precizirati što hoćeš, praktički sve je referenca u C#-u.

 

Čekaj malo, što sve? WTF...

13 godina
neaktivan
offline
Re: Reference u C#-u

Izraz

a = b

 

znači da varijabla a je isto što i varijabla b ako je tip od a i b klasa. Ako je struct, onda to radi što i C++ tj. kopira. Malo je nezgodno. Ali zapravo, kad malo bolje razmisliš, nije uopće trivijalno definirati što je gornji izraz u C++-u. To može biti:

  1. referenciranje (kao što je u C#-u)
  2. shallow copy
  3. deep copy
  4. nešto između

 

Zato postoji ICloneable interface u C#u koji ne bi smio koristiti :D. Jednostavno implementiraj svoje operacije Clone ili tako nešto i onda znaš što je svrha operatora =.

17 godina
offline
Reference u C#-u

Razlikuj u C# vrijednosne i referencne tipove.

 

struct Vrijednosni

{

     int broj;

}

 

class Referencni

{

     int broj;

}

 

Vrijednosni value = new Vrijednosni();

Referencni reference = new Referencni()

 

sada objekte instancirajmo dodjeljivanjm:

 

Vrijednosni noviValue = value;

Referencni noviRference = reference;

 

AKO objektima koje smo instancirali dodjeljivanjem pridružimo nove vrijednosti kako će se to odraziti na originalne objekte?

 

noviValue.broj = 5;

noviReference.broj = 5;

 

Rezultat će biti:

 

value.broj = 0;

noviValue.broj = 5;

reference.broj = 5;

noviReference.broj = 5;

 

Ovo moraš malo detaljnije proučiti u teoriji, pošto ima i side efekata - npr. vrijednosni tipovi koji sadržavaju referencne tipove,

dalje - vrijednosni i referencni tipovi kao parametri metoda, naredba ref i out.

Poruka je uređivana zadnji put uto 27.12.2011 14:36 (Floki).
 
1 0 hvala 1
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice