Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jel ovo boxing/unboxing

[es] :: .NET :: Jel ovo boxing/unboxing

[ Pregleda: 3132 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.co.yu.



+2 Profil

icon Jel ovo boxing/unboxing21.07.2007. u 21:50 - pre 203 meseci
Code:

public static void Main(string[] args)
        {
            //ovaj prvi deo bi mi bio boxing
            int i = 32;
            broj x = new broj();
            x.f_xxx = i;
            Console.WriteLine(x.f_xxx); // <--
            Console.WriteLine(i);
            // ovo dole je predpostavljam unboxing
            int g = 0;
            g = x.f_xxx;
            Console.WriteLine(g);
        }
        class broj
        {
            public int f_xxx;
        }


Jel se ovako upotrebljava box/unbox?
I da koja je razlika izmedju int i Int32, tj. ima li neko pravilo kada se sta koristi?
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 22:31 - pre 203 meseci
Citat:
Valerij Zajcev: Jel se ovako upotrebljava box/unbox?
I da koja je razlika izmedju int i Int32, tj. ima li neko pravilo kada se sta koristi?

Koliko vidim uopšte nemaš boxing, a samim tim ni unboxing. Kapiraš li razliku između value i reference promenljivih?

Nema razlike između int i Int32.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.83.eunet.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 22:57 - pre 203 meseci
Evo ga box-ing:
Console.WriteLine(x.f_xxx); // <--
pošto je f_xxx tipa integer on se mora prvo "spakovati" u object tip. U C++ for .NET se moralo i izričito navoditi ovako:
Console.WriteLine( __box(x.f_xxx)); // <--
a u C#-u se to radi implicitno..

Dalje,
// ovo dole je predpostavljam unboxing
int g = 0;
g = x.f_xxx;.
nema ovde unboxing-a nigde.

Ali evo ga box-ing opet:
Console.WriteLine(g);
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 23:24 - pre 203 meseci
Citat:
toxi_programer: Evo ga box-ing:
Console.WriteLine(x.f_xxx); // <--
pošto je f_xxx tipa integer on se mora prvo "spakovati" u object tip.

Zašto? WriteLine ima overload Console.WriteLine (Int32).
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.65.eunet.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 12:38 - pre 203 meseci
Hm... Heh... :) Pa da.
Ali boxing bi se "desio" o npr. ovakvoj situaciji:
Console.WriteLine("Moj broj je: {0}", 16);

U svakom slučaju, Valerij Zajcev, još primer za boxing je:
Code:

ArrayList ar = new ArrayList();
int broj = 16;
ar.Add( broj); // za ovo bi u C++ morao da napišeš:   ar->Add( __box( broj)); dakle u ovoj liniji se "prevodi" int u Object



 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:20 - pre 203 meseci
AKo posmatrate lingvisticki onda je to primer boxovanja, ali ako gledamo tehnocloski boxing u .NETu je nesto potpuno drugo. Boxing je mogucnost da value type uboxujes u reference type (da bi ga koristio kao reference), na da zadrzis valuetype kao polje reference tipa.

To se radi preko object tipa:
Code:

int x = 21;

object xo = x;   // boxing

Console.Write(xo);    // posto je parametar object, write poziva ToString() koji vraca 21, ovo nije unboxing

int y = (int)xo;     // unboxing, y postaje 21 kao value "kopija" xo-a

x = 42;    // boxed integer nije pokazivac na x, promena x-a ne menja xo


int je kompajlerski alijas za System.Int32 i tako ce i ostati. Mislim da je inicijalni plan bio da se int vezuje za bitnost platforme (tj, da kompajlirano za 64bita int bude alias za System.Int64), ali se od toga odustalo, i na 64-bit platformi int predstavlja int32.

[Ovu poruku je menjao mmix dana 22.07.2007. u 14:35 GMT+1]
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ć
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.co.yu.



+2 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:33 - pre 203 meseci
zbunjuje me sto su svi primeri na koje naidjem napisani upotrebom object:
i = 3;
object o = i;
Nasao sam da je objekt u stvari alias za System.Object
Ali u mom primeru x je ref na objekat klase broj, znaci da je ref tipa, ako kazem x = i; prijavi compile time gresku kada stavim x.f_xxx = i; sve je ok, ovaj je ref tipa ovaj je value i radi, i zato sam ja mislio da je to box.
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:58 - pre 203 meseci
Citat:
mmix:

int je kompajlerski alijas za System.Int32 i tako ce i ostati. Mislim da je inicijalni plan bio da se int vezuje za bitnost platforme (tj, da kompajlirano za 64bita int bude alias za System.Int64), ali se od toga odustalo, i na 64-bit platformi int predstavlja int32.

Hm, i ja sam mislio da će integer pratiti bitnost platformew. Zanimljiva informacija...
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:22 - pre 203 meseci
Da li vazi ista stvar i za Integer u VB-u?
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
77.46.156.*



+171 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:25 - pre 203 meseci
Za zavisnost od platforme postoji IntPtr, pa kome treba...
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.co.yu.



+2 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:33 - pre 203 meseci
@mmix, object xo = x; // boxing, kapiram da umesto object moze da stoji i ArrayList jer je to ref tipa, ali kako bi onda izgledalo da imam klasu "class Klasa" i objekat, Klasa ime = new Klasa(); Ime je ref tipa zasto kada stavim "i = 5; ime = i;" dobijam gresku?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 15:24 - pre 203 meseci
Zato sto int nije Klasa ali jeste Object :)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 16:09 - pre 203 meseci
Citat:
Valerij Zajcev: @mmix, object xo = x; // boxing, kapiram da umesto object moze da stoji i ArrayList jer je to ref tipa, ali kako bi onda izgledalo da imam klasu "class Klasa" i objekat, Klasa ime = new Klasa(); Ime je ref tipa zasto kada stavim "i = 5; ime = i;" dobijam gresku?


E pa tu ti je logicka greska , ne moze da stoji ArrayList, ako stoji ArrayList onda nije boxing. Boxing moze samo i iskljucivo iz value tipa (int, double, itd) u object tip. Pogledaj opet toxijev primer, on jeste instancirao ArayList, ali nije posle rekao ar = broj;, nego ar.Add(broj);, znaci pozavo je metod Add(object) da doda element u listu i kompajler je njegov broj uboxovao u object tip da bi ga prosledio metodi Add. Sam ar je istao isti, referenca na instancu objekta ArrayList.




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ć
 
Odgovor na temu

android~paranoid

Član broj: 81947
Poruke: 211
212.200.179.*



Profil

icon Re: Jel ovo boxing/unboxing16.09.2007. u 11:31 - pre 201 meseci
Citat:
When you box a value, you get an object upon which you can invoke methods, properties, and events.
For example, once you have converted the integer into an object, as shown in this code snippet, you
can call methods that are defined in System.Object, including ToString( ), Equals( ), and so forth.


Razumem svrhu konvertovanja ali...
u cemu je u ovom slucaju stos, kad ove metode koje se navode mogu da pozovem i bez konvertovanja u objekat?

Mislim, šta reći !
 
Odgovor na temu

boki
Boris Prpic
CTO
CodeZen, Cityexpert
Beograd

SuperModerator
Član broj: 2681
Poruke: 2442
*.adsl.verat.net.

Jabber: boki@elitesecurity.org
ICQ: 195245022
Sajt: www.goglasi.com


+34 Profil

icon Re: Jel ovo boxing/unboxing17.09.2007. u 00:24 - pre 201 meseci
u C# i VB mozes jer oni rade boxing implicitno. u C++u moras da uradis explicitno.
 
Odgovor na temu

[es] :: .NET :: Jel ovo boxing/unboxing

[ Pregleda: 3132 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.