Hirdetés
- Szinte simogatja a pénztárcákat a Scythe új hűtője
- Az SK Hynix elárulta, hogy meddig nem lesz elég memória
- Házimozi belépő szinten
- Projektor topic
- Monitorkalibráló eszközök
- Milyen billentyűzetet vegyek?
- …és akkor a memóriapánik után beköszöntött a HDD-pánik
- VR topik
- TCL LCD és LED TV-k
- ASUS ROG Ally
Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz
Alexios
#10081
üzenetére
futtasd le ezt a kódot is és nézd meg az outputot, gondolom a nyelv maga se tudja miről beszél:
int x = 1;
Console.WriteLine(x is object);
Ez valami vicc? Megnézted, hogy mire fordul? Megmutatom:bool b;
int x = 0x11;
b = x is int;
ugyanez ASM-ben:05465EF5 mov dword ptr [ebp-3Ch],1
ezt mégegyszer kiemelem:mov dword ptr [ebp-3Ch],1
Ezzel fordítási időben(ha létezik a változó), akkor azt mondja:
Ha valaki megkérdezi, hogy 1 változó Object-e, akkor 1szerűen mond azt, hogy igen. Tehát már fordítási időben "beleégeti a kódba", hogy true-t adjon vissza. Ez ugyanaz, mintha ezt írnád:bool b = true;
object obj = b;
Console.WriteLine("{0}", obj);De ez is ugyanarra fordul:
bool b = true;
08455EEE mov dword ptr [ebp-3Ch],1
int x = 1;
Ezek az MS-es fiúk nagyon rafkósak ám!!
Bármiféle ellenőrzés nélkül kiíratják, hogy true!!
Ilyen "csalással" könnyű azt mondani, hogy minden object...
Na de nézzük meg, hogy mi is történik akkor, amikor 1 érték típust beleteszünk egy objectbe:bool b = true;
int x = 0x55;
object obj = x;
object obj2 = x as object;
Console.WriteLine("{0} {1}", obj, obj2);Ez a következőre fodul:
int x = 0x55;
05175F21 mov dword ptr [ebp-3Ch],55h
object obj = x;
05175F28 mov ecx,4E0C8D0h
05175F2D call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F32 mov dword ptr [ebp-48h],eax
05175F35 mov ecx,dword ptr [ebp-48h]
05175F38 mov eax,dword ptr [ebp-3Ch]
05175F3B mov dword ptr [ecx+4],eax
05175F3E mov ecx,dword ptr [ebp-48h]
05175F41 mov dword ptr [ebp-40h],ecx
object obj2 = x as object;
05175F44 mov ecx,4E0C8D0h
05175F49 call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F4E mov dword ptr [ebp-4Ch],eax
05175F51 mov edx,dword ptr [ebp-4Ch]
05175F54 mov ecx,dword ptr [ebp-3Ch]
05175F57 mov dword ptr [edx+4],ecx
05175F5A mov edx,dword ptr [ebp-4Ch]
05175F5D mov dword ptr [ebp-44h],edx
Console.WriteLine("{0} {1}", obj, obj2);Ebből ezeket a sorokat emelném ki:
05175F2D call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F49 call CORINFO_HELP_NEWSFAST (0300300Ch)
Ezekben a sorokban látszik, hogy 1 új object jön létre. Boxing történt. De ezek már nem érték típusok, hanem obj-ba és obj2-be bedobozolt int-ek. Ezek már referencia típusok, amiknek a mezőjében int van. És természetes, hogy vmi érték típust dobozolnak be 1 referencia típusba(obj, obj2), akkor az már referencia típus. Ha ellenőrizné is a program, hogy tényleg object-e az ősük, akkor is nyilván true-t adna vissza, hiszen ezek object-ek. Az más kérdés, hogy azért object-ek, mert bedobozolták őket. Ezt bizonyítja a következő kód is:05175F3B mov dword ptr [ecx+4],eax
Itt az ecx regiszterben van a típus azonosító(nevezhetjük object-nek), de az értéket[ecx+4]-be teszi bele(itt is látszik, hogy ez már referencia típus, mert eax értékét nem az dword ptr [ecx]-be teszi, hanem az object címét kihagyva az [ecx+4]-be. Ez is azt igazolja, hogy ez már referencia típus.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Arc Raiders
- Januártól igényelhető a kiskorúak tartalomvédelme a mobilszolgáltatóknál
- Akciófigyelő: Humble 'Worms 30th Anniversary' Bundle (PC)
- Szinte simogatja a pénztárcákat a Scythe új hűtője
- Battlefield 6
- Torrent meghívó kunyeráló
- Az SK Hynix elárulta, hogy meddig nem lesz elég memória
- Bitcoin topic
- Luck Dragon: Asszociációs játék. :)
- Házimozi belépő szinten
- További aktív témák...
- ÁRCSÖKKENTÉS Thinkpad P52s workstation: Core i7 8650U, 32GB RAM, P500 VGA új kijelző / akkumulátorok
- Realme 9 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- KARÁCSONYI BOMBA AKCIÓK! PSN, STEAM, UBISOFT CONNECT, EA APP, XBOX EREDETI KULCSOK 100% GARANCIA
- Acer Predator Helios 18 AI I9 ULTRA 9275HX, 192GB RAM, 2TB SSD, RTX 5080
- Samsung Galaxy S20 FE 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Bármiféle ellenőrzés nélkül kiíratják, hogy true!!
Ilyen "csalással" könnyű azt mondani, hogy minden object...

