作者:aska | 来源:互联网 | 2023-10-10 14:24
微软开发C#的这帮人,尼玛到底还知不知道有一种数据类型叫做无符号整型?妮们当然知道的撒不然C#里怎么会有uint怎么会有Uint16怎么会有Uint32但你们一个newBitma
微软开发C#的这帮人,尼玛到底还知不知道有一种数据类型叫做无符号整型?
妮们当然知道的撒
不然C#里怎么会有uint怎么会有Uint16怎么会有Uint32
但你们一个new Bitmap,width和height居然尼玛用int~你们哪辈子见过width与height是负数的?难不成尼玛把标量当矢量用?技术创新?肏尼玛一天到晚就发编码规范,到最后尼玛自己不遵守规范。
尼玛Interlocked.Exchange 有 (ref int, int) 居然就木有 (ref uint, uint)?难道一个uint还要老子去加一个object lockuint ??
58 个解决方案
另外我觉得 bitmap 使用负值表示翻转或者镜像图像也未尝不可。
应该是语言来规范开发人员?还是应该开发人员来规范自己?
如果你明知道width与height无负数,还不规范自己,那就是自己有问题了.
----------------------------------------------------------
PS:别说C#开发者了,你还是先规范一下你自己的语言吧.
纠缠在width、height使用int还是uint,这也不是主流非脑残的人所做的事。许多编程语言还没有无符号数呢。
主流非脑残的人自己去设计一个.net framework,用十万倍的说服力来说服别人。
偶也知道撒。。偶写东西一项很按规范去做,最后发现原子替换居然不支持uint,偶直接怒了...幸亏可以整个解决方案进行替换,但是还得把替换的地方一个一个地去检查,以免发生负数错误或者超出范围的错误。
偶这些发帖只是想发泄下,生活中总有蛋疼的事,当事人发泄下,后来者作为经验教训。
这是语言啊 你可以不用,但是你又创不出来,要跟着大众走!!
那么按照你的逻辑,java没有无符号数,它是不非主流脑残?
没有办法,对待你的逻辑只有一个办法,就是实际去看看你能建设什么。因为你的批评并没有伤害人家丝毫。
.net framework 设计成跨语言的,那类型系统必然是具有通用性的,而不能设计为特殊性的类型,不然其他语言怎么去兼容呢?
C#的无符号整型 无法用在 new bitmap上,不能说明 “比有符号整型少了很多本应该有的待遇”。
可以用在很多与framework无关的地方
建议楼主去了解下BITMAP的基础知识,或者可以参考MSDN的BITMAPINFOHEADER的解释。
http://msdn.microsoft.com/en-us/library/dd183376
BITMAP为DIB数据时,顶点坐标(0,0)可以为左上或者左下,对应的DIB数据存放方式也就有不同了。
The height of the bitmap, in pixels. If biHeight is positive, the bitmap is a bottom-up DIB and its origin is the lower-left corner. If biHeight is negative, the bitmap is a top-down DIB and its origin is the upper-left corner.
If biHeight is negative, indicating a top-down DIB, biCompression must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed.
If biCompression is BI_JPEG or BI_PNG, the biHeight member specifies the height of the decompressed JPEG or PNG image file, respectively.
观望中,如果不满足必要,我相信微软会有对策解决的,毕竟语言只是一种工具
你不知道Bitmap是.net framework中的类吗,你不知道.net framework不是只给C#一种语言用的吗,如果Bitmap使用了无符号类型那没有无符号类型的语言怎么用它?
知道无符号类型和有符号类型一起做运算会出问题吗,知道Java为什么要设计成只有有符号类型吗?抱怨之前先去学下基础知识吧.
非主流,说让微软想做语言兼容呢,肯定就有损失,还是可以接受的,不然语言兼容怎么办?
Bitmap中的高Hight如果负数的话,代表从最低行网上扫描到最上面的行才是正常的图片。
LZ可以去看看Bitmap的格式标准。
读过C#高级编程的15章《程序集》再来叫嚣吧。
难道LZ不知道VB和J#是没有uint的,要统一这些语言必须支持的最小规范要求,
必须牺牲uint
原子操作针对的是内存地址而非数值,win32中区分&int &uint本来就是多余的,你自己不会转啊?
别瞎扯什么CLS了. C#里不遵守CLS的东西多得是.
BitMap的width和height用int 的原因多半是因为以前的人都用int
支持无符号数的东西少是因为大家都不怎么用,dotnet有2万多个类全支持的话工作量不小, 微软的人懒得做.
没注意楼主犯的一个根本性错误,Bitmap、Interlocked.Exchange和C#有啥关系啊?你要责问的是开发C#的人还是开发.net类库的人。照你这么说InterlockedExchange这个函数从属于C或者C++了,殊不知C#也一样可以调用这个win32函数。
biHeight说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。