Decimal.One etc.
-
public struct Decimal /*...*/ { /*...*/ public const decimal MinusOne = -1m; public const decimal One = 1m; public const decimal Zero = 0m; /*...*/ }
WTF???
-
Frage?
-
Ja, was soll der Rotz?
-
Firefighter schrieb:
Frage?
Ey, du B00n!!!!!!! Du raffst net dass das Müll ist, wa?
-
Ohman
-
Irgendwie hab ich das Gefühl, ihr denkt, C# sei alles, was es in .NET gibt. Programmiert mal in MSIL und ihr werdet verstehen, warum diese Konstanten eventuell von Bedeutung sein könnten...
MfG
-
Hast Du in die Richtung Erfahrung ?
-
Ich? Ich bin nicht jemand, der über sich selbst in Lob ausarten mag
Aber ich versuche, was die Informatik betrifft, meinen Horizont ständig zu erweitern und darum hab ich auch ein wenig MSIL gelernt und auch einige Programme damit geschrieben. Schreib zur Übung mal einen Texteditor (Warum muss es immer ein Texteditor sein?! Texteditoren sind einfach zu realisieren und man weiss stets, welche Funktionalität man einzubauen hat. Ideal, nicht? :p) mit MSIL - es wird dich verändern
Was MSIL betrifft, so betrachte man bitte, dass
System.Decimal
nicht keine direkten Instruktionen bekommen hat in der Sprache. Die Addition zweierSystem.Decimal
s erfolgt nicht peradd
, sondern perSystem.Decimal::Add(valuetype System.Decimal, valuetype System.Decimal)
. Analog dazu kennt MSIL auch keineSystem.Decimal
-Literale. In MSIL definierst du -1 per Attribut:.field public static initonly valuetype System.Decimal MinusOne { .custom instance void System.Runtime.CompilerServices.DecimalConstantAttribute::.ctor(uint8, uint8, uint32, uint32, uint32) = { uint8(0) uint8(0x80) uint32(0) uint32(0) uint32(1) } }
Dieser Code entspricht in C#:
public const decimal MinusOne = -1m;
Da siehst du, wie es unter der Haube funktioniert. Für Zahlen, die häufig vorkommen (ich würde mal meinen, -1, 0 und 1 gehören definitiv dazu), ist es zweifelsohne bequemer, gleich
MinusOne
zu benutzen, als ständig -1 im Eigenbau zu definieren. Und da jetzt intern alles über MSIL läuft, sollte man eventuell ein wenig mehr Verständnis für derartige Implementationsartefakte haben. Nur weil C# die Verwendung (zum Glück) so komfortabel gestaltet, muss es in anderen Sprachen nicht unbedingt so seinMfG
-
Hallo,
vielen Dank für den kurzen Ausflug
Ich habe mich mit MSIL (noch) nicht beschäftigt. (Halt immer so wie es die Zeit zulässt.) Dein Beitrag beantwortet die Ausgehende Frage (?!) doch aber sehr schön und regt noch mehr an MSIL mal auf die ToDo Liste zu setzen.
Vielen Dank!