微软开发C#的这帮人,尼玛到底还知不知道有一种数据类型叫做无符号整型?妮们当然知道的撒
不然C#里怎么会有uint怎么会有Uint16怎么会有Uint32但你们一个new Bitmap,width和height居然尼玛用int~你们哪辈子见过width与height是负数的?难不成尼玛把标量当矢量用?技术创新?肏尼玛一天到晚就发编码规范,到最后尼玛自己不遵守规范。尼玛Interlocked.Exchange 有 (ref int, int) 居然就木有 (ref uint, uint)?难道一个uint还要老子去加一个object lockuint ??

解决方案 »

  1.   

    本帖最后由 caozhy 于 2011-05-31 21:00:22 编辑
      

  2.   

    .NET 类库被设计为跨语言兼容的。
      

  3.   


    难道CLS是残缺语言?连uint都木有,想和脚本语言比谁更简介比谁更脑残比谁更非主流?
      

  4.   

    (1) CLS 不是语言,是语言规范。尽可能少的规定元素类型,意味着可以设计更灵活的语言。
    (2) 你不能因为人民币只有1元、5元、10元、20元、50元、100元面额,没有30元或者8元而觉得人民币脑残。
      

  5.   

    另外我觉得 bitmap 使用负值表示翻转或者镜像图像也未尝不可。
      

  6.   

    应该是语言来规范开发人员?还是应该开发人员来规范自己?
    如果你明知道width与height无负数,还不规范自己,那就是自己有问题了.
    ----------------------------------------------------------
    PS:别说C#开发者了,你还是先规范一下你自己的语言吧.
      

  7.   


    (1).数据类型越少就越灵活?那么只保留一个双精度的double而把其他基元数字数据类型都扔掉,那岂不是更灵活?(2).大哥,别偷换概念行不?偶说滴是C#里本来有的uint,而缺少相应的原子操作API。与人民币有没有30元或8元,没有本质上的联系,就算打比方也没有可比性。
      

  8.   


    那既然这么说,我建议new Bitmap的width和height全部改为string。如果string是一个正数,就当int来处理
    如果是负数,就按你说的去做
    如果string=="QQ",new 出来的Bitmap就是一个肥企鹅的图像
    如果string=="微软老总",那么new 出来的Bitmap可以是比尔盖茨的照片啊..
    如果string=="某些敏感事件",那么new出来的Bitmap就是两个字:“河蟹”这样子是不是更爽更刺激更智能更强大更湿更和谐啊?
      

  9.   

    纠缠在width、height使用int还是uint,这也不是主流非脑残的人所做的事。许多编程语言还没有无符号数呢。
      

  10.   

    本帖最后由 caozhy 于 2011-05-31 21:26:38 编辑
      

  11.   

    主流非脑残的人自己去设计一个.net framework,用十万倍的说服力来说服别人。
      

  12.   

    偶也知道撒。。偶写东西一项很按规范去做,最后发现原子替换居然不支持uint,偶直接怒了...幸亏可以整个解决方案进行替换,但是还得把替换的地方一个一个地去检查,以免发生负数错误或者超出范围的错误。偶这些发帖只是想发泄下,生活中总有蛋疼的事,当事人发泄下,后来者作为经验教训。
      

  13.   

    那么按照你的逻辑,java没有无符号数,它是不非主流脑残?没有办法,对待你的逻辑只有一个办法,就是实际去看看你能建设什么。因为你的批评并没有伤害人家丝毫。
      

  14.   


    我抱怨的核心是,C#有了无符号整型,却比有符号整型少了很多本应该有的待遇。java直接就没有无符号整型,我自然就不会去抱怨java。
      

  15.   

    .net framework 设计成跨语言的,那类型系统必然是具有通用性的,而不能设计为特殊性的类型,不然其他语言怎么去兼容呢? C#的无符号整型 无法用在 new bitmap上,不能说明 “比有符号整型少了很多本应该有的待遇”。可以用在很多与framework无关的地方
      

  16.   

    那我随便给你说一个可以花精力去消磨的地方,比如说windows api中设置画笔宽度:
    http://baike.baidu.com/view/1706960.html?fromTaglist
    仅因为他们在宽度上使用了int,你想让微软把windows api设计团队当作“脑残的一代”而废弃了吗?那么谁又来接替他们呢?
      

  17.   

    汗....
    受教了,原来从WindowsAPI就开始不按规范来做事。
    正所谓上梁不正下梁歪。。
      

  18.   

    建议楼主去了解下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.
      

  19.   

    你不知道Bitmap是.net framework中的类吗,你不知道.net framework不是只给C#一种语言用的吗,如果Bitmap使用了无符号类型那没有无符号类型的语言怎么用它?
    知道无符号类型和有符号类型一起做运算会出问题吗,知道Java为什么要设计成只有有符号类型吗?抱怨之前先去学下基础知识吧.
      

  20.   

    看得出,你比只提到CLS的知道得更多
      

  21.   

    Bitmap中的高Hight如果负数的话,代表从最低行网上扫描到最上面的行才是正常的图片。
    LZ可以去看看Bitmap的格式标准。
      

  22.   

    up  up  up  up  up !!!
      

  23.   

    读过C#高级编程的15章《程序集》再来叫嚣吧。
    难道LZ不知道VB和J#是没有uint的,要统一这些语言必须支持的最小规范要求,
    必须牺牲uint
      

  24.   

    原子操作针对的是内存地址而非数值,win32中区分&int &uint本来就是多余的,你自己不会转啊?
      

  25.   

    别瞎扯什么CLS了. C#里不遵守CLS的东西多得是. 
    BitMap的width和height用int 的原因多半是因为以前的人都用int支持无符号数的东西少是因为大家都不怎么用,dotnet有2万多个类全支持的话工作量不小, 微软的人懒得做.
      

  26.   

    如果C#兼容CLS的话,CLS这个概念就对C#开发者不存在了。分清楚 FCL 和 C#,这是不同的概念。
      

  27.   

    没注意楼主犯的一个根本性错误,Bitmap、Interlocked.Exchange和C#有啥关系啊?你要责问的是开发C#的人还是开发.net类库的人。照你这么说InterlockedExchange这个函数从属于C或者C++了,殊不知C#也一样可以调用这个win32函数。
      

  28.   

    谢谢各位。虽然小弟偶是从ASM/C/C++过来的,但偶也系统学过Java/js等语言。偶纠结问题的症结在于,C#有uint,但int有的待遇,uint却没有,从而造成很多麻烦。至于那些叫嚣偶不懂Bitmap格式的大哥哥们,虽然小弟水平不怎么样,但在单片机上偶是自己写过C的bmp解析的,不过,这个问题根本就不是在谈Bitmap文件格式,而是说C#中Bitmap类的构造器参数问题。还好,有三位大大指点迷津,让小弟偶逐渐明白了这些问题的症结所在,谢谢你们:
      

  29.   

    biHeight说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。
      

  30.   

    Bitmap定义的时候就允许高度为负值的。
    修改bitmap的高度为负值,图像上下翻转,测试成功,与语言无关。
      

  31.   

    uint和int,在计算机内部的存储都是无差别的. 只是主观的解释不同而已.
    uint多出现于内存访问场合.你可以用IntPtr啊.
      

  32.   

    那就举一个“无厘头”的实例吧:比如你要在窗体上画一条线,你的Pen对象实例的width属性可以不可以是-20?而这又代表什么意思?实际上windows只会画出1个像素宽的直线,-20跟1跟0都是一样的意思——1个像素宽。问题是这帮人可以解释这种东西,甚至也可以根本不解释这种东西。我们除非自己重写一套,否则有时候就算咆哮他们、他们也不会修改的。对于什么必须修改、什么不必做修改,什么东西事后重新解释,编程者可以从学术化的思路上可以改一改,变成务实的思路。
      

  33.   

    你不适合搞技术,在生活中骂人还可以体谅,在技术上这样满嘴脏话,不懂瞎叫,只能说明你无知,看着CSDN的很多文章的评论都有一群伪程序员在那里一味的瞎叫、挖苦、嘲笑或者一味的恭维,真替他们悲哀
      

  34.   

    打字就好好打字,别TMD整一堆难懂的网络词汇,还说C#开发人员呢,你先规范好你的中文在说去。