簡體   English   中英

內置類型,何時(不)使用?

[英]Built-in types, when (not) to use?

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

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

語言清楚地定義了它們,並賦予了它們特定的含義,因此我認為沒有任何危害。 但是,這是100%的個人選擇。

話雖這么說-我確實明確使用Int32,Int16等的地方是如果我要處理二進制存儲或傳輸,特別是與自定義二進制格式之間的往來。 在這種情況下,將每個成員的顯式位大小移入和移出文件會使IMO的代碼更具可讀性和可理解性。

語言類型(例如,string,int,char)只是CLR類型(System.String,System.Int32,System.Char)的別名。

它們是可互換的,沒有必要優先選擇另一個。

編輯

張貼者要求在兩者之間進行選擇時有所幫助。

我個人傾向於選擇C#語言類型(int,string,char等),因為它們涉及較少的鍵入-我想我只是懶惰:)

我唯一會優先使用“ System.XYZ"而不是內置類型關鍵字的情況是,當我需要一個非常特定大小的整數類型時,並且我希望所有閱讀我的代碼的人都可以清楚(例如,如果所討論的整數實際上是4個8位字段打包在一起,請使用Int32而不是int 。)

我一直使用System.*類型,因為它們在其他類之間看起來更加一致-大寫的首字母和相同的語法突出顯示。 但這只是個人喜好,只是審美問題。

使用“ int”和“ Int32”(以及其他)完全相同。 通常使用關鍵字(int,Integer(vb.net),bool等...),因為它較短且在IDE中高亮顯示。

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

具體來說,無符號整數類型不符合CLS,因為不要求語言支持無符號整數數學。

除了這種皺紋之外,我建議您使用哪種習慣用法更符合您的組織的代碼慣例。 如果您對類型引用完全使用命名空間,那么我將繼續使用System。*命名空間...(不過,我也建議您反對這種做法,因為這會增加讀取器的負擔,而不會帶來明顯的好處)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM