- Nem tetszik az EU-nak az új díj, amit az Apple a fejlesztők vállára tesz
- Egy hibás appfrissítés miatt távozott a vezérigazgató
- Csoportos keresetek tömegeit zúdítják a tech cégekre a britek, az Apple az első
- Kiderült, hogy miért nem viszik az NVIDIA új AI-chipjeit
- 300 százalékkal emelné meg az árait az Arm
- Linux kezdőknek
- KAÜ/Ügyfélkapu – már elérhető a kétfaktoros hitelesítés
- Nem tetszik az EU-nak az új díj, amit az Apple a fejlesztők vállára tesz
- Volumio (minden verzió: RPi(ARM), x86/x64, bármi)
- Vírusirtó topic
- One otthoni szolgáltatások (TV, internet, telefon)
- 300 százalékkal emelné meg az árait az Arm
- Kiderült, hogy miért nem viszik az NVIDIA új AI-chipjeit
- Tagadja az Apple, hogy eladta volna a Siri által begyűjtött adatokat
- Egy hibás appfrissítés miatt távozott a vezérigazgató
Ú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ú.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
Ú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!
- AMD Navi Radeon™ RX 7xxx sorozat
- Gran Turismo
- Milyen processzort vegyek?
- Fűzzük össze a szavakat :)
- Asszociációs játék. :)
- Hamarosan kapható lesz az Enermax Intel és AMD HEDT platformokhoz szánt AIO-ja
- PlayStation 4
- WoW avagy World of Warcraft -=MMORPG=-
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...
- Konica Minolta Bizhub C227 fénymásoló
- Yamaha NS-555 hangfalpár + opcionális HiFi - házimozi cuccok
- Lenovo ThinkCentre M93p SFF PC, Quad Core i5-4570 CPU, 8 GB DDR3 RAM
- Lenovo ThinkCentre M83 SFF PC, Quad Core i5-4590 CPU, 8 GB DDR3 RAM
- Lenovo ThinkCentre E73 SFF PC, Quad Core i5-4460 CPU, 8 GB DDR3 RAM