Laden...

Eigener Datentyp ähnlich Double erstellen

Erstellt von SlyFox vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.146 Views
S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 14 Jahren
Eigener Datentyp ähnlich Double erstellen

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

309 Beiträge seit 2007
vor 14 Jahren

Stichwort Erweiterungsmethoden [C#] in der Studio-Hilfe

mfg Hajoseb

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France

3.971 Beiträge seit 2006
vor 14 Jahren

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...

49.485 Beiträge seit 2005
vor 14 Jahren

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

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 14 Jahren
Warum kann man einer Struktur direkt einen Wert zuweisen / abrufen?

[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

564 Beiträge seit 2005
vor 14 Jahren

Du kannst jeder Variable direkt einen Wert zuweisen:


Class c1 = new Class();
Class c2;
c2 = c1;

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo SlyFox,

suchst du eventuell nach dem Begriff "Überladen des impliziten Konvertierungsoperators"?

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 14 Jahren

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

1.002 Beiträge seit 2007
vor 14 Jahren

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

5.742 Beiträge seit 2007
vor 14 Jahren

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;
}

1.002 Beiträge seit 2007
vor 14 Jahren

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

49.485 Beiträge seit 2005
vor 14 Jahren

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

3.971 Beiträge seit 2006
vor 14 Jahren

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...

S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 14 Jahren

Hallo Herbivore,

mit "impliziten Castingoperator" konnte ich leider nichts anfangen, sorry.

Christoph

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo SlyFox,

abgesehen davon, dass wir erwarten, dass man unbekannte Begriffe nachschält, ist das kein Grund, einen neuen Thread aufzumachen.

herbivore