praegune kellaaeg 26.06.2025 00:07:18
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
spreiii
HV kasutaja
liitunud: 27.12.2008
|
27.03.2012 13:23:14
|
|
|
Tekkis veel üks küsimus, millele ei suutnud vastust leida.
Oletame, et mul on koodis 2 public enum-i ning 1 klass. Kas on võimalik anda ühele muutujale A või B enum tüüp :
c#:
|
public enum A { ... } public enum B { ... } public class Klass { ... // Mida sooviks saavutada: public A (või) B UusMuutuja { get; set; } }
|
Või pole selline asi võimalik?
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
27.03.2012 14:12:37
|
|
|
Et üks muutuja on kas tüüpi A või B? Genericutega saaks vast miskit kokku häkkida kuid eriti ilus see poleks.
Parem räägi mida sa täpselt saavutada üritad, küllap on paremaid lahendusi selleks.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
27.03.2012 15:43:22
|
|
|
Ütleme nii, et see mida ma üritan saavutada pole tingimata vajalik, aga ma leian, et siis poleks nii palju kopeeritud koodi ühe ja sama ülesandega.
Mul on olemas 2 enum nimekirja, mille väärtused on vaja järjestada tähestikulises järjekorras. Kõik see on mul juba lahendatud, aga hetkel üritangi aru saada, et kas äkki oleks võimalik kahe erineva funktsiooni asemel kasutada hoopis ainult üht funktsiooni, kuhu siis annaks edasi vastava parameetri.
Sorteerimiseks kasutan hetkel sellist viisi, et mul on üks public void Sort funktsioon, kus koostan ArrayListi ja lisan kõik vastava enum-i väärtused sinna listi. Seejärel kasutan ühes klassis IComparer interface-i, mille initsialiseerin(?) selles Sort funktsioonis ning viin läbi list.Sort.
Need 2 enum-i on kasutusel kahes erinevas klassis, mis on tuletatud(?) ühest abstraktsest klassist. Ehk siis mu mõttekäik oli selline, et kui saaks tolle kahe klassi erinevate muutujate asemel (public A nimetus, public B nimetus) kasutada seda sama "nimetus" muutujat abstraktses klassis, mis siis oleks automaatselt määratud.
Väga-väga segane jutt tuli, kuid loodan, et on aru saada, mida ma üritan saavutada
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
27.03.2012 22:16:44
|
|
|
public IEnumerable<T> Sort<T>(T enum) where T: SinuEnum1, SinuEnum2 {
... tee midagi
}
Kas ehk midagi sellist?
E: Testisin järgi, see töötab:
class Prog
{
enum MyEnum1
{
Foo,
Bar
}
enum MyEnum2
{
Foobar,
Baz
}
public void Run()
{
var enum1 = MyEnum1.Bar;
var enum2 = MyEnum2.Baz;
var i = Sort(enum1);
var j = Sort(enum2);
}
public IEnumerable<T> Sort<T>(T t) where T : struct
{
return new List<T>();
}
}
|
Võid sinna vahele lisada kontrolle, a la stiilis:
if(t.GetType() != typeof(MyEnum1) || t.GetType() != typeof(MyEnum2))
throw new InvalidEnumArgumentException("Invalid Enum type");
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|