Hirdetés
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Klaus Duran: Nem csajos Samsung Z Flip
- GoodSpeed: Bye PET Palack, hello SodaStream
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- eBay-es kütyük kis pénzért
- sziku69: Fűzzük össze a szavakat :)
- MaxxDamage: Vizes Laptop Hűtés? Lehetséges? Igen!
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- Olcsó/régi telefonok fotói egymás mellett
Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz
pmonitor #10083 üzenetére
Ha jól emléxem, akkor már többször linkeltem be ezt a linket. Ez a másik fórumról való. Ott oldottam meg. Maga a kód(ami nem működik:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenericTest
{
interface ITorol
{
void delete();
}
class GenerikusTipus<T>
{
T adat;
public GenerikusTipus(T adat)
{
this.adat = adat;
}
public T GetErtek()
{
return adat;
}
public void TorlunkHaTudja()
{
if (adat is ITorol)
(adat as ITorol).delete();
}
}
struct Valami : ITorol
{
public int ertek;
public Valami(int ertek)
{
this.ertek = ertek;
}
public void delete()
{
ertek = 0;
}
new public string ToString()
{
return ertek.ToString();
}
}
class Program
{
static void Main(string[] args)
{
Valami v = new Valami(5);
GenerikusTipus<Valami> genTip = new GenerikusTipus<Valami>(v);
Console.WriteLine(genTip.GetErtek().ToString());
genTip.TorlunkHaTudja();
Console.WriteLine(genTip.GetErtek().ToString());
Console.ReadKey();
}
}
}A "megoldásom":
Az as operátor ugye csak referencia, ill. nullabe típusok esetén működik. Tehát akkor az adott típust ki kell tenni object-be(ami ugyebár referencia típus), ez már magában hordozza a "metaadatokat" is. Na most így már alkalmazhatónak kell lennie az object példányra az as operátornak. Viszont a végén az adat-ba be kell tenni a kapott értéket.
if (adat is ITorol)
{
object o = adat;
(o as ITorol).delete();
adat = (T)o;
}Ez érdekességnek jó, de "élesben" nem igazán használnám...
Ha ezt a kódot(és a megoldást) valaki becsülettel megnézi, akkor egyértelműen látszik, hogy a metódusok 1 boxingolt típussal(másolattal) dolgoznak. Ezért van az, hogy az o objectet a törlés után vissza kell tenni az aktuális mezőbe. Az érték típusok csak az alapműveletek esetén(*/+-) nagyon gyorsak. metódushívás esetén nagyon lassú.
Ú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!
- FM1 FÉLKONFIG, Gigabyte GA-A75M-DS2, AMD A4-3420, 4GB DDR3 Memória
- T14s Gen3 14" FHD+ IPS érintő i5-1245U 16GB 256GB NVMe magyar vbill ujjlolv gar
- XPS 15 9500 15.6" FHD+ IPS i7-10750H GTX 1650Ti 16GB 512GB magyar vbill ujjlolv IR kam új akku gar
- asrock b660 pro rs+intel 14600k+64gb ddr4 csere ps5 pro ra!
- Precision 5690 16" FHD+ IPS Ultra 7 165H RTX 1000 Ada 32GB 1TB NVMe magyar vbill ujjlolv IR kam gar
- BESZÁMÍTÁS! MSI B450 R5 2600X 16GB DDR4 512GB SSD GTX 1650 4GB Zalman N4 FSP 400W
- Tablet felvásárlás!! Samsung Galaxy Tab A8, Samsung Galaxy Tab A9, Samsung Galaxy Tab S6 Lite
- 2db Intel D3-S4610 1.92TB 2.5" szerver SSD (4 órát ment)
- BESZÁMÍTÁS! Asus H310M i3 9100F 16GB DDR4 120GB SSD 500GB HDD GTX 970 4GB Zalman ZM-T7 FSP 400W
- ÁRCSÖKKENTÉS ASUS HD6870 videókártya
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest