Laden...

#define Ersatz

Erstellt von Blue_Dragon vor 18 Jahren Letzter Beitrag vor 17 Jahren 2.791 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren
#define Ersatz

Hi!

Weiß jemand von euch ob es einen define ersatz in C# gibt?

Ich hab nähmlich folgendes Problem:

Ich möchte ein Programm schreiben von dem ich vorher aber nicht weiß ob double alleine reicht. Jetzt werd ich mir einige Variablen anlegen vom Typ double nachher das programm laufen lassen und dann wenn ich ein Problem bekomme das double zu klein ist muss ich das ändern, aber ich will dann net alle meine double umschreiben müssen gibts da was das ich so was wie

#define mytype double

mache und wenn das nicht reicht umschreibe

#define mytype decimal

weiß das jemand von euch?

und was nicht so wichtig aber auch interessant währe ist:

gibts eine Möglichkeit dass ich nicht immer Math.Sin(x) schreiben muss sondern nur sin(x) (ohne das ich eine eigene Funktion mache) schreibe?

lg

6.862 Beiträge seit 2003
vor 18 Jahren

Original von Blue_Dragon
Weiß jemand von euch ob es einen define ersatz in C# gibt?

Gibts zum Glück nicht!
Für bedingte Kompilierung ist der Präprozessor okay, für den Rest gehört er abgeschafft, wurd er ja auch zum Glück in C#.

Original von Blue_Dragon
Ich möchte ein Programm schreiben von dem ich vorher aber nicht weiß ob double alleine reicht.

Was meinst du mit "nicht reicht"? Vom Wertebereich her? Dann nimm doch gleich den größeren. Falls du dir dann sorgen um erhöhten Speicherverbrauch machst, bist du eh bei der falschen Sprache 🙂 - und notfalls schreib dir nen eigenen Datentyp, wo du dann die Implementierung ändern kannst.

Original von Blue_Dragon
gibts eine Möglichkeit dass ich nicht immer Math.Sin(x) schreiben muss sondern nur sin(x) (ohne das ich eine eigene Funktion mache) schreibe?

Nee, weil das statische Funktionen sind, und die gehören nunmal zu einer Klasse, und das ist in diesem Fall die Math Klasse.

Baka wa shinanakya naoranai.

Mein XING Profil.

I
46 Beiträge seit 2006
vor 17 Jahren

moin,
ist zwar arg alt...

also ich kann nicht mehr

#define MAX_USER 10

machen?
wie lös ich das denn sonst?

Gelöschter Account
vor 17 Jahren

konstanten?

const

oder statische variablen?

static
1.665 Beiträge seit 2006
vor 17 Jahren

Original von JAck30lena
konstanten?

const  

oder statische variablen?

static  

Was haben denn statische Variablen auf einmal mit Konstanten zu tun?
Für die nur-Konstanten braucht man die Instanz der Klasse und bei den statischen nicht.

I
46 Beiträge seit 2006
vor 17 Jahren

also alle

const byte max_use =12

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo JunkyXL,

Für die nur-Konstanten braucht man die Instanz der Klasse und bei den statischen nicht.

Interessanter Ansatz, stimmt aber nicht. Konstanten sind automatisch static. Das sieht man daran, dass es zum einen dem error CS0504: "Die Konstante <Name> kann nicht als "static" gekennzeichnet sein." gibt und zum anderen kann man auch in statischen Klassen const benutzen.

herbivore

S
8.746 Beiträge seit 2005
vor 17 Jahren

Achtung: const nur Assembly-intern einsetzen. Sonst readonly verwenden.

T
512 Beiträge seit 2006
vor 17 Jahren

Gibts dafür auch einen Grund?

e.f.q.

Aus Falschem folgt Beliebiges

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Traumzauberbaum,

Konstanten werden als Wert in den IL-Code aller benutzenden Assemblies kompiliert. Wenn du dann später den Wert der Konstante änderst und nur die definierende Assembly übersetzt, reicht das nicht, du musst auch alle benutzenden Assemblies neu übersetzen.

herbivore

Gelöschter Account
vor 17 Jahren

Was haben denn statische Variablen auf einmal mit Konstanten zu tun?
Für die nur-Konstanten braucht man die Instanz der Klasse und bei den statischen nicht.

selbst wenn dem so wäre dann ist das immernoch ein rudimentärer (oder besser gesagt ein typsicherer) ersatz für #define

1.665 Beiträge seit 2006
vor 17 Jahren

Original von herbivore
Hallo JunkyXL,

Interessanter Ansatz, stimmt aber nicht. Konstanten sind automatisch static.

herbivore

Ja stimmt, bin seltsamerweise davon ausgegangen, dass man eine Instanz brauch.
Habe die Tatsache anscheinend nicht immer ganz wahrgenommen 🙂