Chắc chắn, tôi biết sự khác biệt cơ bản giữa số nguyên chưa ký (uint
) và số nguyên đã ký (int
).Sử dụng uint hoặc int
Tôi nhận thấy rằng trong các lớp công khai .NET, một thuộc tính được gọi là Length
luôn sử dụng các số nguyên đã ký.
Có thể điều này là do số nguyên không dấu không tuân thủ CLS.
Tuy nhiên, ví dụ, trong chức năng tĩnh của tôi:
public static double GetDistributionDispersion(int tokens, int[] positions)
Tham số tokens
và tất cả các yếu tố trong positions
không thể là tiêu cực. Nếu nó là tiêu cực, kết quả cuối cùng là vô ích. Vì vậy, nếu tôi sử dụng int
cả hai cho tokens
và positions
, tôi phải kiểm tra các giá trị mỗi khi hàm này được gọi (và trả về giá trị không có ý nghĩa hoặc ném ngoại lệ nếu tìm thấy giá trị âm ???), thật tẻ nhạt.
OK, thì chúng ta nên sử dụng uint
cho cả hai tham số. Điều này thực sự có ý nghĩa với tôi.
Tôi nhận thấy, tuy nhiên, như trong nhiều API công khai, chúng hầu như luôn sử dụng int
. Điều đó có nghĩa là bên trong việc thực hiện của họ, họ luôn luôn kiểm tra tính tiêu cực của mỗi giá trị (nếu nó được cho là không âm)?
Vì vậy, trong một từ, tôi nên làm gì?
tôi có thể cung cấp hai trường hợp:
- Chức năng này sẽ chỉ được gọi bằng bản thân mình trong giải pháp của riêng mình;
- Chức năng này sẽ được sử dụng làm thư viện bởi những người khác trong nhóm khác.
Chúng tôi có nên sử dụng các lược đồ khác nhau cho hai trường hợp này không?
Peter
P.S .: Tôi đã làm rất nhiều nghiên cứu, và vẫn còn có lý do để thuyết phục tôi không sử dụng uint
:-)
Tôi nghĩ rằng bài đăng này: [Sự khác biệt khi sử dụng int và uint và khi nào sử dụng] [1] http: // stackoverflow.com/questions/3068474/khác biệt-of-sử dụng-int-và-uint-và-khi-to-sử dụng là câu trả lời cho câu hỏi của bạn. – Ankar
@Ankar, tôi đã tìm kiếm trước khi đăng câu hỏi này và tôi cũng đọc bài đăng đó, nhưng nó không cung cấp đủ lý do để thuyết phục tôi không sử dụng 'uint'. –
có thể trùng lặp của [Tôi có nên sử dụng uint trong C# cho các giá trị không được âm?] (Http://stackoverflow.com/questions/2013116/should-i-use-uint-in-c-sharp-for- giá trị không thể phủ định) – nawfal