使用此示例:
Color.FromArgb(Int32,Int32,Int32)
根据指定的8位颜色值(红色,绿色和蓝色)创建颜色结构.alpha值隐式为255(完全不透明).尽管此方法允许为每个颜色分量传递32位值,但每个分量的值限制为8位.
如果每个组件的值限制为8位,那么他们为什么不使用Byte
而不是Int32
?
在更广泛的范围内,我发现人们使用Int32
非常普遍,即使是Int16
或者Byte
足够.是否有使用什么特别的原因Int32
一般过Int16
,Byte
等?
我的猜测是某些.NET语言不太支持byte.也许它不符合CLS,我不记得了.这些天不再关心CLS合规性,但在1.0天内,这是一个重要的功能级别.另请注意,VB.NET不支持无符号类型,这是跨.NET语言对整数的不同支持的示例.
使用int
构造函数特别奇怪,因为A, R, G, B
属性是byte
.
我认为这是一个API设计错误.
该Color
结构不是一般的特别漂亮.它不仅具有ARGB值,还具有a KnownColor
和名称.许多问题都被塞进了这个结构中.为了好玩,该Equals
方法有一个错误:return name.Equals(name);
.当然,这总是如此.这个结构看起来很仓促.您可以从该Equals
方法中判断出代码作者不知道字符串具有重载的相等运算符.运算符equals Color
是刚刚复制的15行.我想这个问题的真正答案是:实习生做到了!
通常,这Int32
是优选的,因为大多数算术运算扩展到32位,并且它是普通硬件的有效整数宽度.较短的整数类型用于更多特殊用途.
因为有人建议这可以节省低价:我不明白这一点.扩展整数转换是隐式的,没有有意义的性能成本(通常没有).
归档时间: |
|
查看次数: |
864 次 |
最近记录: |