2010-03-01 49 views
9

Điều này có thể hơi tầm thường, nhưng trong C# bạn thích int hoặc UInt16 khi lưu trữ một cổng mạng trong một biến? Các lớp khung sử dụng int khi giao dịch với một cổng mạng mặc dù UInt16 thực sự đại diện cho các giá trị hợp lệ.Tôi có nên sử dụng int hoặc UInt16 không?

Trả lời

8

ký (int/short vv, đúng hơn là uint/ushort) có lợi thế là CLS phù hợp, do đó được khuyến khích trừ khi bạn có lý do chính đáng.

Re int vs short - trong nhiều trường hợp nó là hiệu quả hơn để tính toán với int (hoặc uint), vì tất cả các nhà khai thác được tối ưu hóa cho việc này. Nếu bạn chỉ lưu trữ và truy xuất nó thì tất nhiên đây không phải là vấn đề.

+0

Tôi tin rằng các loại chưa ký được tuân thủ CLS bắt đầu bằng 2.0. Đã một thời gian dài kể từ khi tôi nhìn vào điều này mặc dù vì vậy tôi có thể sai. – JaredPar

+0

@JaredPar - kỳ quặc, 'ushort' không tăng cảnh báo, nhưng' uint' hiện (sử dụng VS2008): "Cảnh báo Loại đối số 'uint' không tuân thủ CLS" –

+0

@JaredPar - cũng, MSDN " API này không tuân thủ CLS. Phương án thay thế CLS là Int32. " http://msdn.microsoft.com/en-us/library/system.uint16.aspx (cũng nói rằng đối với 4.0) –

0

nếu bạn có bộ xử lý 32 bit và bạn sẽ sử dụng giá trị 16 bit (đối với nền kinh tế bộ nhớ), nó sẽ được căn chỉnh đến 32 bit. Vì vậy, tôi nghĩ rằng nó không phải là rất quan trọng sử dụng ubit 16bit thay vì giá trị 32 bit.

+1

Ngoại trừ trong một mảng, tất nhiên. –

+0

vâng đúng vậy – tga

Các vấn đề liên quan