2009-05-26 32 views
7

C#和VB.NET附帶內置類型映射到CLR類型。例如:int(C#)和Integer(VB)映射到System.Int32,long(C#)和Long(VB)映射到System.Int64。什麼是決定何時使用內置類型或不使用它們的最佳實踐(使用System。* structs/classes來代替)?內置類型,何時(不)使用?

+0

我選擇了肖恩的答案,因爲它爲我提供了兩種選擇之間選擇的堅實基礎。其他答案只是陳述「它是平等的,使用」 - 這不是真的有用,國際海事組織。如果我可以選擇第二個最好的答案,那就是裏德的答案。 無論如何,既然人們抱怨,我會讓更多的答案進來... – 2009-05-26 16:44:40

回答

14

我唯一會明確地使用「System.XYZ"優先於內置類型關鍵字的時候是我需要一個非常特定大小的整數類型,而且我希望這對任何閱讀我的代碼的人都是清楚的(例如I可以使用Int32代替int如果有問題的整數實際上是4個8位字段擠在一起。)

15

語言類型(例如字符串,整型,字符)只是別名爲CLR類型(System.String,系統.Int32,System.Char)。

它們是可互換的,沒有必要比另一個更喜歡一個

編輯

的海報在兩者之間選擇,非常好問一些幫助。

我個人傾向於選擇C#語言的類型(int,字符串,焦炭等),因爲它們涉及更少的輸入 - 我想我只是懶惰:)

+0

換句話說。他們是完全一樣的東西。 Think:String s =「hi」;字符串s2 = s; s和s2是相同的字符串。 – jjnguy 2009-05-26 16:33:05

+0

@jjnguy:這不是關於S&S2的值是否相等,而是忽略這些值。我說的是保存值的類型(不是值)是相同的。即字符串s1 =「你好」; System.String s2 =「World」; s1與s2的TYPE類型相同,不管它們的值有什麼不同。 – 2009-05-26 16:48:27

37

我幾乎總是使用內置在別名中,如int/short/long。他們更容易閱讀,並且不需要您導入System或在任何地方輸入System.Int32等。

語言清楚地定義了它們,並給它們一個特定的含義,所以我沒有看到任何傷害。但是,這是100%的個人選擇。

這就是說 - 我明確使用Int32,Int16等的一個地方是,如果我正在處理二進制存儲或傳輸,尤其是自定義二進制格式。在這種情況下,每個成員的顯式比特大小進出文件使得代碼更具可讀性和可理解性,IMO。

2

使用「int」和「Int32」(和其他)完全相同。典型的使用關鍵字(int,Integer(vb.net),bool等),因爲它更短,並且在IDE中被高調引用。

5

我總是使用System.*類型,因爲它們在其他類之間看起來更一致 - 大寫的第一個字母和相同的語法高亮顯示。但這只是一種個人喜好,只是一個美學問題。

1

與何時使用或不使用語言類型與顯式BCL類名相比,知道您打算使用的類型是否符合CLS更重要。

具體而言,無符號整數類型不符合CLS,因爲不要求語言支持無符號整數數學運算。

除了這個皺紋...我會推薦哪個習語更符合你的組織代碼實踐。如果您完全命名空間類型引用,那麼我將繼續使用System。*命名空間的模式...(但我也建議不要這樣做,因爲它會增加讀取器負載而不會增加清晰度)。