2009-05-27 13 views
19

Wenn jemand mir den Unterschied zwischen Dezimal und Dezimal in C# erklären könnte, wäre das großartig.Unterschied zwischen Dezimal und Dezimal

In einer allgemeineren Weise, was ist der Unterschied zwischen den Kleinbuchstaben Strukturen wie Dezimal, Int, String und die Großbuchstaben-Klassen Decimal, Int32, String.

Ist der einzige Unterschied, dass die Großbuchstaben auch Funktionen (wie Decimal.Divide()) umbrechen?

Antwort

39

Sie sind gleich. Der Typ Dezimal ist ein Alias ​​für System.Decimal.

Also im Grunde Dezimal ist das gleiche wie Dezimal. Es hängt von der Benutzereinstellung ab, welche zu verwenden ist, aber die meisten bevorzugen es, int und string zu verwenden, da sie einfacher zu schreiben und unter C++ - Programmierern vertrauter sind.

+1

Wenn sie genau gleich sind, warum haben wir beide? Warum nicht nur einer von ihnen? –

+0

dezimal ist die C# -spezifische Version des .NET-Typs System.Decimal - wie es sich herausstellt, ist es nur ein Alias. – Nate

+0

Großartig! Danke Leute! –

0

dezimal, int, string sind alle nur kurze Hand Notation, um Dinge einfacher/hübscher für Sie zu machen. Das Framework weiß nicht wirklich, was eine "Dezimalzahl" ist, aber es kennt System.Decimal. Wenn Sie also Ihren Code kompilieren, wird dezimal einfach zu System.Decimal. Sehen Sie sich Code an, in dem alle Typen vollständig qualifiziert sind, und versuchen Sie dann, einen Code zu suchen, in dem die Aliase verwendet werden. Ich denke, die meisten Programmierer werden die kompakteren Aliase bevorzugen und sie als leichter lesbar empfinden. Ich denke auch, dass es ein Rückgriff auf C/C++ sein könnte, um den Übergang zu erleichtern.

1

Die built-in C# types sind nicht alle Strukturen *. Sie sind Aliase für die vordefinierten Typen im Systemnamespace. Sie sind buchstäblich in allen Punkten gleich except formatting. Die Alias-Typen sind klein und formatiert wie Keywords (dunkelblau). Die Systemtypen sind PascalCased und formatiert wie Typen (hellblau).


* object und string sind Klassen

+0

Die integrierten C# -Typen (int, double usw.) _are_ structs. –

+0

Danke Eric, ich habe mein Gehirn zu Hause gelassen. –

2

Als C# .NET eine Sprache ist, alle Arten zu einem .NET Framework-Typ zuordnen müssen.

Um Ihre erste Frage zu beantworten, ist dezimal ein Alias ​​des System.Decimal .NET Framework-Typs. Sie können austauschbar verwendet werden.

Um Ihre zweite Frage zu beantworten, sollten sowohl Dezimal als auch Dezimal die gleichen Funktionen erweitern, sowohl von der erzeugten Variablen als auch von der "Struktur" des Werttyps selbst.

decimal FirstDec = 12; 
Decimal SecondDec = 13; 
decimal ThirdDec = decimal.Ceiling(FirstDec, SecondDec); 
Decimal FourthDec = Decimal.Floor(ThirdDec); 
bool isEqual = FirstDec.Equals(SecondDec) && FourthDec.Equals(ThirdDec); 

Die folgende MSDN Page for Built-In Types wird Ihnen zeigen, welche System.ValueType jeder Alias ​​abbildet. Und speziell für Decimal und decimal können Sie auf diese MSDN Page for Decimal verweisen.