zoukankan      html  css  js  c++  java
  • 论全世界所有程序员都会犯的错误(C#)希望大家不会犯。

    前两天在PConline上看到一篇“论全世界所有程序员都会犯的错误”(网上有很多,好像是转贴的),
    http://www.pconline.com.cn/pcedu/empolder/gj/java/0509/695483.html
    说的是JAVA中使用静态对象出错的问题,没仔细看,只觉得他的那个实例在C#上好像
    不会有这样的错误。想不到,今天,花了我好几个小时找的BUG,原来竟然是同样的错误
    我的实例,我用一个类来存储图片实例(Bitmap),然后用一个列表(ArrayList)来保存多个
    这样的类的实例,但是我发现每次重画的时候,被来取得不相同的图片,画的都是同一个图片,
    而且是最后加入的那个类存储的图片,百思不得其解,最后发现我竟然把Bitmap声明成一个
    静态的变量了. Private static Bitmap surface;阿!太粗心了.
    用IL反编译,在结构化处定义
     IL_0001:  stsfld     class [System.Drawing]System.Drawing.Bitmap SKEP.MS.ControlLib.DeviceIcon::surface;
    因此你把类加入队列的时候,静态的变量确是放在其他的内存区的(不知道这样理解对不对),
    最终得结果是后来的Bitmap不断的覆盖,你取得Bitmap永远是最后加入的,欢迎大家来讨论,谢谢!
    今天仔细看这篇文章,发现在文章最后有这么一段字
     其实Java的syntactic sugar并不算多,C#的syntactic sugar才真的是无所不在,也因此C#的初学者更容易犯了“全世界所有程序员都会犯的错误”。
    附博客中静态对象的文章
    http://lixianhuei.cnblogs.com/archive/2005/08/31/227274.html

     
  • 相关阅读:
    UVA11584 划分成回文串
    UVA1220Party at Hali-Bula(树的最大独立集 + 唯一性判断)
    BUAA1389愤怒的DZY(最大值最小化)
    九度1502 最大值最小化问题
    App(4.25)
    App(4.24)
    App(4.23)
    App(4.22)
    学习进度条(八)
    App(4.21)
  • 原文地址:https://www.cnblogs.com/wanghualiang/p/232478.html
Copyright © 2011-2022 走看看