Hallo,
ich habe einen eigenen Wertetyp (struct) erstellt und möchte ihm einen Wert zuweisen können so wie ich es auch mit den "eingebauten" Wertetypen mache (MyType x =15). Geht das? Oder muss ich einen Konstruktor benutzen?
Überall steht das man dass '=' nicht überladen kann. Aber die C# entwickler haben es ja mit den standard Wertetypen auch irgendwie gemacht. Oder ist da die Behandlung unterschiedlich?
danke
tscherno
Du musst dir einen impliziten Konverter schreiben.
Um Beispielsweise int zuweisen zu können, schreibst du:
public struct MyStruct
{
int intern;
public MyStruct( int val )
{
intern = val;
}
public static implicit operator MyStruct( int val )
{
return new MyStruct(val);
}
}
Vielen Dank! 😁
Hallo,
was kann jetzt im MyStruct implementiert werden, um den intern-Wert standardmäßig auszugeben?
MyStruct bla = -2;
int i = bla;
Gruß Sprotti
heut debug ich, morgen browse ich, übermorgen cast ich die Königin auf int...
Der umgekehrte Weg geht nicht, da du dafür Änderungen am Typ int vornehmen müsstest was aber nicht möglich ist.
Lg XXX
wie sieht die Geschichte aus wenn ein expliziter cast herhalten soll. gehts dann?
int i = (int)bla;
heut debug ich, morgen browse ich, übermorgen cast ich die Königin auf int...
Der umgekehrte Weg geht nicht, da du dafür Änderungen am Typ int vornehmen müsstest was aber nicht möglich ist.
Das ist falsch, der implizite cast kann natürlich auch in die andere Richtung geschrieben werden:
public struct MyStruct
{
int intern;
public MyStruct(int val)
{
intern = val;
}
public static implicit operator MyStruct(int val)
{
return new MyStruct(val);
}
public static implicit operator int(MyStruct val)
{
return val.intern;
}
}
sowie auch der explizite dazu musst du nur dass schlüsselwort implicit auf explicit ändern.
mfg Markus
Danke für die raschen Antworten
heut debug ich, morgen browse ich, übermorgen cast ich die Königin auf int...