4 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
String
代表System.String
它,它是.NET Framework類型。string
是 C#語(yǔ)言中 的別名System.String
。它們都編譯成System.String
IL(中間語(yǔ)言),所以沒(méi)有區(qū)別。選擇你喜歡的并使用它。如果您使用C#編寫(xiě)代碼,我更喜歡string
它,因?yàn)樗荂#類型的別名,并且是C#程序員所熟知的。
我可以對(duì)(int
,System.Int32
)等說(shuō)同樣的話。

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
我聽(tīng)說(shuō)過(guò)在C#中使用提供的類型別名的最佳答案來(lái)自Jeffrey Richter在他的書(shū)“ CLR Via C?!敝?/a>。以下是他的3個(gè)理由:
我看到許多開(kāi)發(fā)人員感到困惑,不知道是否在他們的代碼中使用字符串或字符串。因?yàn)樵贑#中,字符串(關(guān)鍵字)完全映射到System.String(一種FCL類型),所以沒(méi)有區(qū)別,任何一種都可以使用。
在C#中,長(zhǎng)映射到System.Int64,但是在不同的編程語(yǔ)言中,long可以映射到Int16或Int32。事實(shí)上,C ++ / CLI確實(shí)將long視為Int32。如果某人使用一種語(yǔ)言閱讀源代碼,如果他或她習(xí)慣于使用不同的編程語(yǔ)言進(jìn)行編程,則很容易誤解代碼的意圖。事實(shí)上,大多數(shù)語(yǔ)言甚至不會(huì)將long視為關(guān)鍵字,也不會(huì)編譯使用它的代碼。
FCL有許多方法,它們將類型名稱作為其方法名稱的一部分。例如,BinaryReader類型提供諸如ReadBoolean,ReadInt32,ReadSingle等方法,而System.Convert類型提供諸如ToBoolean,ToInt32,ToSingle等方法。雖然編寫(xiě)下面的代碼是合法的,但浮點(diǎn)線對(duì)我來(lái)說(shuō)感覺(jué)非常不自然,并且線條不正確并不明顯:
BinaryReader br = new BinaryReader(...);float val = br.ReadSingle(); // OK, but feels unnaturalSingle val = br.ReadSingle(); // OK and feels good
所以你有它。我認(rèn)為這些都是非常好的觀點(diǎn)。但是,我發(fā)現(xiàn)自己在自己的代碼中沒(méi)有使用Jeffrey的建議。也許我太困在我的C#世界,但我最終試圖使我的代碼看起來(lái)像框架代碼。
- 4 回答
- 0 關(guān)注
- 1231 瀏覽
添加回答
舉報(bào)