Ajoj. "upucivac", gde si to pokupio?
Dalje, Nemo se ljutite, ali ja ne mogu da verujem koliko vas je zbunjeno oko ove veoma osnovne stvari.
1. Svi tipovi u .NETu su ili value ili reference (string je reference), ako niste sigurni koji je tip, verovatno je referentni
2. Svi reference tipovi se prosledjuju kao pointeri (type*). Tacka. .NET NIKAD nece napraviti kopiju objekta na steku pri formiranju stvarnih parametara (ali NIKAD), ni kao obican, ni kao ref ni kao out parametar.
3. Svi value tipovi se prosledjuju kopiranjem na stek sem kad su ref i out.
4. Ref parametar oznacava "pointer na". Posto je reference tip vec pointer, to znaci da se (ref TextBox x) prosledjuje kao pointer na pointer na objekat X (TextBox**). Jedini razlog da se ovo koristi je da bi promenila sama referenca u pozivnom kodu:
Code:
...
object x = new object();
PoRef(ref x);
// ovde x vise nije onaj koji je kreiran u konstruktoru
...
void PoRef(ref object x)
{
x = new object();
}
5. Ako hoces da menjas interno stanje objekta, ne treba da koristis ref parametre. Posto vec dobijas referencu po defaultu mozes da joj menjas interno stanje i ta promena ce ostati nakon povratka iz tela metoda.
6. ref na value type je dozvoljen i time se kompajler forsira da kreira pointer na value type. Proces je u pozadini isti kao proces boxovanja, ali je ovo "boxovanje" implicitno kao sto je i "unboxovanje" u telu funkcije implicitno, u prevodu potpuno transparentno. Iako radis sa pointerom na value type, sors kod je isti, kompajler je taj koji pravi razliku.
Znaci ref ne koristis kad radis izmenu NAD objektom, ref koristis kad radis ZAMENU objekta, out radis kad funkcija treba da vrati vise od jednog rezultata pa sam return value nije dovoljan. Princip out je isti kao princip za ref samo sto kompajler nece izbaciti warning ako stvarni parametar nije kreiran (pointer na null value je dozvoljen kao stvarni parametar).
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić