首页 新闻 会员 周边 捐助

c#的BitArray类构造函数length为什么用int?

0
悬赏园豆:100 [已解决问题] 解决于 2020-01-16 16:57

BitArray的长度为什么用int而不使用uint,这样设计的理由是什么?

X_Stars的主页 X_Stars | 菜鸟二级 | 园豆:307
提问于:2020-01-08 15:07
< >
分享
最佳答案
3

uint类型不符合CLS。请尽可能使用int。

CLS 表示的含义,就是Common Language Specification 公共语言规范。

收获园豆:50
猝不及防 | 老鸟四级 |园豆:2878 | 2020-01-08 16:01

自定义类也要符合CLS?

X_Stars | 园豆:307 (菜鸟二级) | 2020-01-08 16:42

@X_Stars:
公共语言规范 (Common Language Specification, CLS)
公共语言运行库支持的语言功能的子集,包括几种面向对象的编程语言的通用功能。
符合 CLS 的组件和工具能够保证与其他符合 CLS 的组件和工具交互操作。

你想和其他的交互吗

猝不及防 | 园豆:2878 (老鸟四级) | 2020-01-08 16:46
其他回答(2)
-1

所有的列表,数组长度都是用的int,估计是为了省事吧,毕竟可以少打一个字母。

收获园豆:20
会长 | 园豆:12463 (专家六级) | 2020-01-08 15:56

BitArray是用int数组实现的,用uint也能满足int数组的长度是int

支持(0) 反对(0) X_Stars | 园豆:307 (菜鸟二级) | 2020-01-08 16:42
0

https://docs.microsoft.com/en-us/dotnet/api/system.collections.bitarray
从msdn 上看,bitarray 实现接口 ICollection,其实中ICollection.count 就是int的,要是用uint 超出一定值就出错了。
这都不是重点。
重点是int 表达值可以达到2G。对于这个数来说,一般程序已经足够了。毕竟这只是一个基本类型。

收获园豆:30
pencile | 园豆:845 (小虾三级) | 2020-01-08 23:03

int最大2^31-1,而bitarray长度是指有多少位,所以最大也只有256M,离2G还差得远

支持(0) 反对(0) X_Stars | 园豆:307 (菜鸟二级) | 2020-01-09 09:34

@X_Stars: 我说的是2^31-1个状态。并非占用的内存。

支持(0) 反对(0) pencile | 园豆:845 (小虾三级) | 2020-01-09 10:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册