- Kompakt vízhűtés
- TCL LCD és LED TV-k
- Leégett az első Radeon a hírhedt 12V-2x6 tápkonnektorral
- Fejhallgató erősítő és DAC topik
- Nem indul és mi a baja a gépemnek topik
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Milyen TV-t vegyek?
- Nyomtató topik
- AMD vs. INTEL vs. NVIDIA
- Házimozi belépő szinten
Ú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!
- Milyen légkondit a lakásba?
- Nintendo Wii U
- Kompakt vízhűtés
- One otthoni szolgáltatások (TV, internet, telefon)
- eMAG vélemények - tapasztalatok
- TCL LCD és LED TV-k
- WoW avagy World of Warcraft -=MMORPG=-
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Spórolós topik
- További aktív témák...
- Legion Slim 5 16AHP9 15.6" QHD+ IPS Ryzen 7 8845HS RTX 4060 16GB 512GB NVMe magyar vbill gar
- MSI Katana // i7-12700H // 32GB RAM // 1TB SSD // RTX 3070
- Bomba ár! Fujitsu LifeBook U904 - i5-4G I 10GB I 256SSD I 14" QHD+ I HDMI I Cam I W10 I Garancia!
- Bomba ár! Fujitsu LifeBook E744 - i7-4GEN I 16GB I 512SSD I 14" HD+ I DP I Cam I W10 I Garancia!
- Bomba ár! Fujitsu LifeBook E744 - i5-4GEN I 8GB I 256SSD I 14" HD+ I DP I Cam I W10 I Garancia!
- Samsung Galaxy A55 / 8 RAM 256GB / Gyárifüggetlen / 12hó Harancia
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- Gamer PC-Számítógép! Csere-Beszámítás! R5 1600X / GTX 1080 8GB / 32GB DDR4 / 256SSD + 2TB HDD
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i5 14600KF 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: FOTC
Város: Budapest