Hirdetés
- HiFi műszaki szemmel - sztereó hangrendszerek
- Samsung LCD és LED TV-k
- Amlogic S905, S912 processzoros készülékek
- Fejhallgató erősítő és DAC topik
- Milyen egeret válasszak?
- Menekül a HEVC licencdíja elől a HP és a Dell
- Mini-ITX
- 5 kilowattos GPU-k előtt nyitná meg az utat az Intel
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
Új hozzászólás Aktív témák
-
Gregorius
őstag
Azonban a struct legnagyobb "hátránya", vagyis az érték szerinti hivatkozás mellett max. 16 KB lehet az összes taggal együtt
Az egyetlen limit, amibe bele lehet ütközni, az a stack overflow valahol 1M környékén (64-bites app esetén kicsit kevesebb, mint 32-bites esetén). De ekkora struct létrehozásához már komolyan trükközni kell egymásba ágyazásokkal, ugyanis a fordító belső limitje miatt egyetlen structnak sem lehet 64k darabnál több fieldje. De ez a limit ugyanúgy vonatkozik classokra is.Megjegyzem az ajánlott struct méret a pár tíz bájt alatt van. Ennél nagyobb structnál már valószínűleg hatékonyabb classt használni. Egy szint fölött túl nagy overhead az egész struct tartalom másolgatása az átadásokkor.
nincs automatikus GC sem
Milyen GC-nek kellene lennie? A struct pont azért tud hatékonyabb lenni adott helyen a classoknál, mert önmagában semmilyen GC-ben nem vesz részt. Ha a stacken foglal helyet, akkor pontosan akkor szabadul fel a memóriaterülete, amikor kiesik a scope-ból. Ellentétben egy class változó által mutatott objektumot adott esetben csak később gyűjt be a GC. Ha boxolva vagy más objektum részeként van a struct a heapen, akkor persze ugyanúgy GC-ződik, mint egy sima class, utóbbi esetben pontosan akkor szabadul fel a területe, mint a tartalmazó objektumé.Ezek szerint nem érdemes C#-ban struct-ot használni?
Kisméretű adatcsomagok tologatására érdemes, ahol szemantikailag is indokolt a használata. Illetve mint az elhangzott P/Invoke esetén gyakran ezt követeli meg a hívás.Van még pár teljesítményprobléma, ami ellenjavallja a structok használatát, de ezek nem a struct jellegéből adódnak, hanem a JIT fordító retardáltságából és idővel valószínűleg megoldódnak.
Továbbá van egy érdekes használati mintája a structnak: hatékony wrappert lehet vele írni, amikor az öröklődés nem megoldható. Ilyenkor ugyanis a struct csak egyetlen objektumreferenciát tartalmaz és ez másolódik mindenhova. Ez gyakorlatilag azt jelenti, hogy a struct többé-kevésbé class szemantikával működik, annak megfelelő a memóriafoglalása is, csak egy rakás másik metódust rá lehet aggatni.
Ú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!
- Formula-1
- Opel topik
- HiFi műszaki szemmel - sztereó hangrendszerek
- Samsung LCD és LED TV-k
- Amlogic S905, S912 processzoros készülékek
- Fejhallgató erősítő és DAC topik
- PlayStation 5
- Google Pixel topik
- Félmilliónál is többen voltak kíváncsiak a Cronos: The New Dawnra
- Milyen egeret válasszak?
- További aktív témák...
- Csere-Beszámítás! MSI Katana GF76! I7 11800H / 3060 / 16GB DDR4 17Colos kijelző!
- Eladó új, bontatlan csomagolású, garanciális Sennheiser Momentum True Wireless 4 aktív zajszűrős (AN
- Sony PS VR2 + ajándék állvány
- iPhone 16 128GB récezöld 6 hónapos gyönyörű! Akkumlátor 99%! 2026 május 23-ig Apple garancia!
- 1TB Samsung 3,5"-os HDD-k (ár és állapot infók a leírásban)
- GYÖNYÖRŰ iPhone 12 Mini 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3647
- HIBÁTLAN iPhone 14 Pro 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3919, 100% Akkumulátor
- HP EliteBook 840 G7 i5-10210U 16GB 256GB FHD 400nit 1 év garancia
- Lenovo Thinkpad X13 Gen1 Ryzen5 4650U Refurbished - Garancia
- LG 45GS95QX - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi


