C #: Wie funktionierts: Einheit MyUnit = 5;
-
03-07-2019 - |
Frage
Ich habe gerade bemerkt, dass Sie in C # tun dies kann:
Unit myUnit = 5;
statt, um dies zu tun:
Unit myUnit = new Unit(5);
Wer weiß, wie ich das mit meinem eigenen structs erreichen kann? Ich hatte einen Blick auf die Einheit Struktur mit Reflektor und bemerkte das Attribut verwendet Typeconverter wurde, aber nachdem ich einen benutzerdefinierten Typeconverter für meine Struktur geschaffen Ich konnte immer noch nicht den Compiler bekommen, um diese bequem Syntax zu ermöglichen.
Lösung
Sie müssen eine implizite Konvertierung Operator bereitzustellen, von int zu Einheit, etwa so:
public struct Unit
{ // the conversion operator...
public static implicit operator Unit(int value)
{
return new Unit(value);
}
// the boring stuff...
private readonly int value;
public int Value { get { return value; } }
public Unit(int value) { this.value = value; }
}
Andere Tipps
Sie benötigen einen Cast-Operator für die Klasse bereitzustellen, die ein Int32 nimmt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow