2009-05-27 16 views
19

Se qualcuno potesse spiegarmi la differenza tra decimale e decimale in C# sarebbe fantastico.Differenza tra decimale e decimale

In modo più generale, qual è la differenza tra le strutture minuscole come decimale, int, stringa e le classi maiuscole Decimal, Int32, String.

L'unica differenza è che le classi maiuscole includono anche funzioni (come Decimal.Divide())?

risposta

39

Sono uguali. Il tipo decimale è un alias per System.Decimal.

Quindi in pratica il decimale è la stessa cosa di Decimal. Dipende dalle preferenze dell'utente quale usare, ma la maggior parte preferisce usare int e string poichè sono più facili da scrivere e più familiari tra i programmatori C++.

+1

Se sono esattamente uguali, perché li abbiamo entrambi? Perché non solo uno di loro? –

+0

decimale è la versione specifica di C# del tipo .NET System.Decimal - come risulta essere solo un alias. – Nate

+0

Ottimo! Grazie ragazzi! –

0

decimale, int, stringa sono tutte notazioni a mano corta per rendere le cose più facili/più carine per te. Il framework non sa veramente cosa sia un "decimale", ma conosce System.Decimal, quindi quando si compila il codice, il decimale si trasforma in System.Decimal. Prova a guardare un codice in cui tutti i tipi sono pienamente qualificati, quindi prova a guardare qualche codice in cui vengono utilizzati gli alias, penso che la maggior parte dei programmatori preferirà gli alias più compatti e percepirà che è più facile da leggere. Penso anche che potrebbe essere un ritorno a C/C++ per rendere più facile la transizione.

1

Le built-in C# types non sono tutte le strutture *. Sono alias per i tipi predefiniti nello spazio dei nomi System. Sono letteralmente uguali in tutti i modi except formatting. I tipi di alias sono in minuscolo e formattati come parole chiave (blu scuro). I tipi di sistema sono PascalCased e formattati come i tipi (blu chiaro).


* object e string sono classi

+0

I tipi C# incorporati (int, double e così via) _ are_ structs. –

+0

Grazie Eric, ho lasciato il cervello a casa per quello. –

2

Come C# è un linguaggio .NET, tutti i tipi devono mappare un tipo .NET Framework.

Per rispondere alla prima domanda, il decimale è un alias del tipo System.Decimal di .NET Framework. Possono essere usati in modo intercambiabile.

Per rispondere alla seconda domanda, sia Decimale che decimale dovrebbero estendere le stesse funzioni, inclusi sia dalla variabile creata che dalla "Struttura" del tipo di valore stesso.

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); 

Il seguente MSDN Page for Built-In Types vi mostrerà che System.ValueType ogni alias mappato. E per Decimal e decimal in particolare, è possibile fare riferimento a questo MSDN Page for Decimal.