2009-05-27 40 views
19

如果有人能向我解釋C#中的十進制和十進制之間的差別,那就太好了。十進制和十進制之間的區別

以更一般的方式,像小數點,整型,字符串和大寫類Decimal,Int32,String之類的小寫結構之間有什麼區別。

唯一的區別是大寫的類也包裝函數(如Decimal.Divide())?

回答

39

它們是相同的。十進制類型是System.Decimal的別名。

所以基本上十進制和Decimal是一樣的。這取決於用戶的偏好,哪一個可以使用,但最喜歡使用int和string,因爲它們更容易輸入,並且在C++程序員中更爲熟悉。

+1

如果它們完全一樣,爲什麼我們有這兩個呢?爲什麼不只是其中之一? – 2009-05-27 14:15:08

+0

十進制是.NET類型System.Decimal的C#特定版本 - 因爲它只是一個別名。 – Nate 2009-05-27 14:18:38

0

十進制,整數,字符串都只是簡短的符號,讓你更容易/更漂亮。該框架並不真正知道「十進制」是什麼,但它確實知道System.Decimal,所以當您編譯代碼時,十進制會變成System.Decimal。嘗試查看所有類型完全限定的代碼,然後嘗試查看使用別名的代碼,我認爲大多數程序員會更喜歡更緊湊的別名,並認爲它更易於閱讀。我也認爲這可能是對C/C++的回擊,使轉換更容易。

1

built-in C# types不是所有結構*。它們是System命名空間中預定義類型的別名。它們在所有方面的字面意思都相同except formatting。別名類型爲小寫字母,並且與關鍵字(深藍色)類似。系統類型爲PascalCased並且類型爲(淺藍色)。


* objectstring是類

2

由於C#是.NET語言,所有類型必須映射到.NET Framework類型。

要回答你的第一個問題,decimal是System.Decimal .NET Framework類型的別名。它們可以互換使用。

要回答第二個問題,Decimal和decimal都應該擴展相同的函數,包括從創建的變量和值類型自身的「Structure」。

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

MSDN Page for Built-In Types會告訴你這System.ValueType每個別名映射到。具體而言,對於Decimaldecimal,可以參考此MSDN Page for Decimal

相關問題