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

Jel ovo boxing/unboxing

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

[ Pregleda: 1179 | Odgovora: 14 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

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



Profil

icon Jel ovo boxing/unboxing21.07.2007. u 21:50

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?
21.07.2007. u 21:50 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3002
*.net.upc.cz.

Sajt: blog.radioni.ca


Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 22:31
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.
21.07.2007. u 22:31 

toxi_programer
Nemanja Todić
Beograd

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

Sajt: www.todicsoft.com


Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 22:57
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);
To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
21.07.2007. u 22:57 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3002
*.net.upc.cz.

Sajt: blog.radioni.ca


Profil

icon Re: Jel ovo boxing/unboxing21.07.2007. u 23:24
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).
21.07.2007. u 23:24 

toxi_programer
Nemanja Todić
Beograd

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

Sajt: www.todicsoft.com


Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 12:38
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



To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
22.07.2007. u 12:38 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1612
*.ppp-dhcp.logic.bm.



Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:20
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]
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
22.07.2007. u 13:20 

Valerij Zajcev

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



Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:33
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.
22.07.2007. u 13:33 

maksvel
Čačak

Član broj: 107376
Poruke: 267
*.smin.sezampro.yu.

Sajt: www.tfc.kg.ac.yu/tempus-j..


Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 13:58
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...
Unix is user-friendly—it's just choosy about who its friends are.
_______________________
http://www.tfc.kg.ac.yu
22.07.2007. u 13:58 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8676
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:22
Da li vazi ista stvar i za Integer u VB-u?
22.07.2007. u 14:22 

negyxo
Aleksandar Perkuchin
unknown

Član broj: 29751
Poruke: 635
77.46.156.*



Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:25
Za zavisnost od platforme postoji IntPtr, pa kome treba...
Only Time Will Tell
22.07.2007. u 14:25 

Valerij Zajcev

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



Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 14:33
@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?
22.07.2007. u 14:33 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8676
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 15:24
Zato sto int nije Klasa ali jeste Object :)
22.07.2007. u 15:24 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1612
*.ppp-dhcp.logic.bm.



Profil

icon Re: Jel ovo boxing/unboxing22.07.2007. u 16:09
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.




▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
22.07.2007. u 16:09 

android~paranoid
Mark Renton

Član broj: 81947
Poruke: 185
212.200.179.*



Profil

icon Re: Jel ovo boxing/unboxing16.09.2007. u 11:31
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 !
16.09.2007. u 11:31 

boki
Boris Prpic
Network Administrator, Loudworks MM Studio. Freelance..
Beograd

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

Jabber: boki@elitesecurity.org
ICQ: 195245022
Sajt: blog.psyhex.com


Profil

icon Re: Jel ovo boxing/unboxing17.09.2007. u 00:24
u C# i VB mozes jer oni rade boxing implicitno. u C++u moras da uradis explicitno.
Nobody cares, sometimes spelled "I.d.o.n.t.g.i.v.e.a.f.u.c.k" is a policy employed by dictators, despots, democracy, the general public, everybody, and the ES moderators.
♫Last.fm♫|BLOGERICA
Pisi latinicom!
17.09.2007. u 00:24 

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

[ Pregleda: 1179 | Odgovora: 14 ]

Postavi temu Odgovori

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