» »

[C#] unboxing

[C#] unboxing

borchi ::

zakaj ne gre tole:

Int32 i = 5555;
Object obj = i;
Int32 j = (obj.GetType()) obj;
l'jga

alum ::

inkompatibilni tipi?

deduje Int32 od Objecta?

Microsoft ::

Dela tole:

Int32 i = 555;
System.Type t;
Object o = i;
t = o.GetType();

Torej, vrne ti System.Type in ne System.Int32. Dela tole:

i = (int)o;
in
if(t.ToString() == "System.Int32"){i = (int)o;}


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

64202 ::

Sem pogledal cil specifikacijo in sem nasel dve instrukcije za caste: castclass in refanyval. Obe pa zahtevata tip ob compile-timeu, torej take runtime mahinacije odpadejo. Taksen ultradinamicen cast v C# verjetno nima nobene uporabne vrednosti, jezik je namrec presvoh.

MS: Type je ze vredu, sami tipi naceloma niso vrednosti. Lahko pa imajo run-time predstavitev, ki je tipa Type :\ :))

borchi ::

@microsoft: ja, nekako tako delam sedaj.

@64202: ehhh, tega ravno nisem hotu slišat ;( se pravi je treba za vsak k*rčev objekt preverjat tip in ga pol castat?
l'jga

64202 ::

Sej mogoce se motim pa nisem dobro pogledal :)

Drugace pa... odvisno kaj delas. Mogoce tole kej pomaga, ce uporabis dispatch tabelo za tipe (ne znam zares C#, priblizna psevdokoda :)):

Hash tabela = new Hash();
tabela["System.Int32"] = akcija1;
tabela["System.Blub"] = akcija2;

akcija1(Object x_) { Int32 x = (Int32)x_; ... }
akcija2(Object x_) { Blub x = (Blub)x_; ... }

//uporaba za Object o
tabela[o.getType().ToString()](o);


Kar je simulacija tegale:
akcija(Int32 x) {...}
akcija(Blub x) {...}

//uporaba za Object o
akcija( (o.getType()) o );

noraguta ::

pred casom sem podoben problem rešil vsaj za collectionBase v nemerlu(dotnet 1.1) .
takole http://freeweb.siol.net/apenet/noraColl... (zaradi type inferencinga in polymorfizma na funkcijami se , da casting lepo skriti v indexer). se pravi zelo java like generik. na zalost pa ne dela serializacija. (c# je rahlo konzervativen , okrog sintaktičnih bonbončkov).
Pust' ot pobyedy k pobyedye vyedyot!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
91117 (910) japol
»

[Visual C#] kako narediti vrstice?

Oddelek: Programiranje
91710 (1192) dbeong
»

c# class

Oddelek: Programiranje
342274 (1868) japol
»

[ASP.NET]

Oddelek: Programiranje
61329 (1183) OmegaM
»

ASP- prenašanje vrednosti

Oddelek: Izdelava spletišč
171366 (1201) Microsoft

Več podobnih tem