2010-03-01 123 views
9

這可能有些微不足道,但在C#中,當將網絡端口存儲在變量中時,您更喜歡int還是UInt16?雖然UInt16實際上表示有效值,但框架類在處理網絡端口時使用int。我應該使用int還是UInt16?

回答

8

簽署(int/short等,而這uint/ushort)有被符合CLS的優勢,使建議除非你有一個很好的理由。

重新int VS short - 在大多數情況下它是更有效的計算int(或uint),因爲所有運營商都此優化。如果你只是存儲和檢索它,那當然這不是一個問題。

+0

我相信無符號類型是從2.0開始的符合CLS的。自從我看了這篇文章之後很長一段時間,所以我可能是錯的。 – JaredPar 2010-03-01 22:34:20

+0

@JaredPar - 奇怪的是,'ushort'不會引發警告,但'uint'確實(使用VS2008):「警告參數類型'uint'不符合CLS」 – 2010-03-01 22:37:38

+0

@JaredPar - 也是MSDN「此API不符合CLS標準,符合CLS的替代方案是Int32。「 http://msdn.microsoft.com/en-us/library/system.uint16.aspx(也是說4.0) – 2010-03-01 22:38:51

0

如果你有32位處理器,並且你將使用16位的值(對於內存的經濟性),它將對齊到32位。所以我認爲使用16bit uint而不是32bit值並不重要。

+1

除了在數組中,當然。 – 2010-03-01 22:47:33

+0

是的,沒錯 – tga 2010-03-02 11:35:54