2009-12-22 11 views
9

In C# wenn ich decimal (Kleinbuchstaben 'd') verwenden, zeigt die IDE es in dunkelblau (wie int). Wenn ich Decimal (Großbuchstaben 'd') verwende, zeigt die IDE es in teal (wie ein Klassenname). In beiden Fällen lautet der Tooltip struct System.Decimal.In C# sind Dezimal und Dezimal unterschiedlich?

Gibt es einen Unterschied? Ist man "bevorzugt"?

Antwort

19

Nein; identisch. decimal ist definiert als als Alias ​​zu System.Decimal, und wird im Allgemeinen bevorzugt, außer in den öffentlichen Methodennamen, wo Sie den richtigen Namen verwenden sollten (ReadDecimal, etc) - weil Ihre Anrufer möglicherweise nicht C#. Dies ist deutlicher in int vs ReadInt32 usw.

Es sicherlich ist nicht der Java-Stil Boxen Unterschied.

(natürlich, wenn Sie etwas tun, wie erklärt ein mehr-Namespace-local Decimal, die etwas ganz anderes tut, dann gibt sind Unterschiede, aber das wäre dumm).

+0

Danke, Marc, und Glückwunsch zu 100K! –

+0

Prost - Ich bin froh, dass ich vor Weihnachten da war ;-p –

+2

Es ist ein festivus Wunder! –

1

Dezimal ist ein Alias ​​für Dezimal. Sie sind das Gleiche.

2

Es ist die gleiche Sache, Dezimal ist der .Net-Typ und Dezimalzahl ist das C# -Schlüsselwort.

0

Nein. Sie sind nur Abkürzungen.

Wenn Sie den Mauszeiger über die Dezimalstelle bewegen, sehen Sie System.Decimal. Wie bei int und System.Int32, Objekt und System.Object, Schnur und System.String, Doppel- und System.Double

ziehe ich das Dezimalsystem und String, aber ich glaube wirklich, seine persönliche

0

Nein, sie‘ das Gleiche. Einer ist als ein Schlüsselwort (dezimal) gefärbt, der andere ist als ein Typ (Dezimal) gefärbt. Das Schlüsselwort ist nur ein Alias ​​für den Typ.

1

Das dunkelblau ist für Sprache Schlüsselwörter, blaugrün ist für Typen. Im Fall von decimal ist es ein Schlüsselwort, das einen Typalias darstellt.

2

System.Decimal es ist ein .NET Framework-Typ, decimal ist ein Alias ​​ in der Sprache C#.

Beide sind kompiliert zu System.Decimal in IL, also gibt es keinen Unterschied.

ist genau die gleiche Sache über int und System.Int32, string und System.String etc ..

0

Es ist die gleiche Sache. 'deciaml' ist das Schlüsselwort C# für System.Decimal.

Dies galt für andere Typen wie String und String usw.

1

decimal ein Schlüsselwort ist und bezieht sich immer auf die in struct System.Decimal Basisklassenbibliothek definiert. Decimal bedeutet in der Regel das gleiche wie die meisten Menschen using System; oben auf ihren Quellcode haben.Genau genommen sind diese jedoch nicht identisch (Sie können sie nicht blind finden und ersetzen):

namespace Test { 
    class Decimal { } 
} 

// File2.cs 
using Test; 
class DecimalIsNotdecimal { 
     void Method(decimal d) { ... } 
     void Method(Decimal d) { ... } // works! 
}