Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Eigener Datentyp ähnlich Double erstellen
SlyFox
myCSharp.de - Member



Dabei seit:
Beiträge: 231
Herkunft: Köln

Themenstarter:

Eigener Datentyp ähnlich Double erstellen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Hajoseb
myCSharp.de - Member

Avatar #avatar-2670.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Stichwort Erweiterungsmethoden [C#] in der Studio-Hilfe

mfg Hajoseb
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hajoseb am .
"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.”
Anatole France
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
SlyFox
myCSharp.de - Member



Dabei seit:
Beiträge: 231
Herkunft: Köln

Themenstarter:

Warum kann man einer Struktur direkt einen Wert zuweisen / abrufen?

beantworten | zitieren | melden

[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
private Nachricht | Beiträge des Benutzers
ZiMD
myCSharp.de - Member

Avatar #avatar-1977.png


Dabei seit:
Beiträge: 564

beantworten | zitieren | melden

Du kannst jeder Variable direkt einen Wert zuweisen:


Class c1 = new Class();
Class c2;
c2 = c1;
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ZiMD am .
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo SlyFox,

suchst du eventuell nach dem Begriff "Überladen des impliziten Konvertierungsoperators"?
private Nachricht | Beiträge des Benutzers
SlyFox
myCSharp.de - Member



Dabei seit:
Beiträge: 231
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1.002

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von SlyFox
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;
}
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1.002

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo SlyFox,

warum machst du einen neuen Thread auf, wenn deine Frage in dem bestehenden schon beantwortet wurde?
Zitat von herbivore aus dem bestehenden Thread
Damit Zuweisungen von und an double möglich sind, kannst du implizite Cast-Operatoren schreiben.

herbivore
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Zitat
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...
private Nachricht | Beiträge des Benutzers
SlyFox
myCSharp.de - Member



Dabei seit:
Beiträge: 231
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Hallo Herbivore,

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

Christoph
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo SlyFox,

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

herbivore
private Nachricht | Beiträge des Benutzers