Prio p = 8;Das ist mit einer Struktur und einem impliziten Operator recht schnell erreichbar.
Weight w = 0.5;
public static implicit operator Prio(byte args)Nun können aber auch andere Werte außerhalb {0..9} übergeben werden, was dann intern abgefangen werden muss. Bei den Standard Typen meldet schon spätestens der Compiler einen Fehler.
Bei den Standard Typen meldet schon spätestens der Compiler einen Fehler.
double d = double.MaxValue;
int i = (int)d;
Byte b = 400;Beim zu definiertem Typ wollen wir einen Wertebereich 0 bis 9, also bei der Zuweisung von 10 ebenfalls einen Fehler.
Prio p1 = 10; // <= FehlerIm Operator wird byte als Typ angegeben und beide Zuweisungen sind zulässig. Ich habe jetzt mal alle Schnittstellen die Byte implementiert hinzugefügt, was diesbezüglich nichts bewirkt.
Prio p2 = 9; // hier ok
|
Sollte ein Kommentar werden, Entschuldigung
– me 29.09.09
|
||
|
Der Kompilerfehler wird nur bei den eingebauten Typen geworfen (vielleicht ändert sich das aber in zukünfigen Versionen). Wenn es das ist was du meinst.
– gfoidl 29.09.09
|
||
|
Anscheinend haben auch andere das Problem. Hier http://stackoverflow.com/questions/491199/why-java-c-and-c-dont-have-ranges wurde das diskutiert
– me 30.09.09
|
|
Somit sollte es möglich mit VC++ eine .net-Assembly zu erstellen die dies ermöglich. Diese Assembly (bzw. die Klassen daraus) können dann in C# verwendet werden.
– gfoidl 09.10.09
|