Hallo,
ich arbeite viel mit Winkeln und Kreisen und muss deshalb immer wieder von Radiant in Degree umrechnen.
Dabei würde ich gerne eine Struct erstellen, wo folgendes möglich sein sollte:
Radiant winkelRad;
Degree winkelDeg;
Degree winkelDeg2;
winkelDeg = 1;
winkelRad = winkelDeg.ToRad();
wineklDeg2 = winkelRad.ToDeg();
Im Prinzip sollte diese Struct mit der Struct von System.Int32 identisch sein, jedoch noch um ToRad() bzw. ToDeg() ergänzt sein.
Vererbung ist ja leider nicht möglich, aber vielleicht gibt es ja einen anderen Ansatz, um eine Int32 ähnliche Klasse zu erstellen.
Für jeden Tipp bin ich sehr dankbar.
Christoph
Stichwort Erweiterungsmethoden [C#] in der Studio-Hilfe
mfg Hajoseb
**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France
Ansonsten schau dir im Reflector mal Decimal an. Dieser ist kein nativer Typ, sondern wurde von MS auch "selbst geschrieben"
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Hallo SlyFox,
wenn du einen eigenen Struct schreiben willst, ist das ja auch kein Problem. Du muss halt alle Operationen definieren, die du haben willst.
Damit Zuweisungen von und an double möglich sind, kannst du implizite Cast-Operatoren schreiben.
herbivore
[EDIT=herbivore]Threads zusammengefügt[/EDIT]
Hallo,
Int32 ist eine Sturktur (System.Int32).
Warum kann man dann direkt der Struktur Werte übergeben bzw. davon abrufen?
Int32 i; // struct System.Int32
i = 5;
Console.Writeline(i);
Kann mir bitte jemand ein Stichwort nennen unter dem ich Informationen dazu finden kann?
Vielen Dank schon mal
Christoph
Du kannst jeder Variable direkt einen Wert zuweisen:
Class c1 = new Class();
Class c2;
c2 = c1;
Hallo SlyFox,
suchst du eventuell nach dem Begriff "Überladen des impliziten Konvertierungsoperators"?
Hallo winSharp93,
vielen Dank für den Tipp.
Habe jetzt folgendes gefunden, was mir offensichtlich hilft:
struct degree
{
int deg;
public static implicit operator degree(int i)
{
degree temp = new degree();
temp.deg = i;
return temp;
}
}
Damit kann ich folgendes machen:
degree D;
D = 5; // D.deg = 5;
Aber wie bekomme ich folgendes hin?
int i = D; // i = D.deg;
Christoph
Hallo SlyFox,
ich will jetzt nichts falsches sagen, aber das müsste über Erweiterungsmethoden lösbar sein.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Aber wie bekomme ich folgendes hin?
int i = D; // i = D.deg;
"Drehe den Operator um", d.h.:
public static implicit operator int(degree d)
{
return d.deg;
}
Hallo winSharp93,
da hatte ich wohl Tomaten auf den Augen. Danke!
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo SlyFox,
warum machst du einen neuen Thread auf, wenn deine Frage in dem bestehenden schon beantwortet wurde?
Damit Zuweisungen von und an double möglich sind, kannst du implizite Cast-Operatoren schreiben.
herbivore
ich will jetzt nichts falsches sagen, aber das müsste über Erweiterungsmethoden lösbar sein.
Nein, wie der Name schon sagt ist eine extension method eine Funktion oder Methode die einer Klasse ohne Vererbung hinzugefügt werden kann. Hier wird aber ein Operator gesucht (in diesem fall ein impliziter oder explizter Casting-Operator)
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Hallo Herbivore,
mit "impliziten Castingoperator" konnte ich leider nichts anfangen, sorry.
Christoph
Hallo SlyFox,
abgesehen davon, dass wir erwarten, dass man unbekannte Begriffe nachschält, ist das kein Grund, einen neuen Thread aufzumachen.
herbivore