有个很笨的办法,就是加一个变量来标记这个bool是否初始化

解决方案 »

  1.   

    你有一点不明白,没有初始化的bool类型其值就为false。也就是bool a;和bool a=false;是一样的,int型的如果不初始化就是0,对于对象来说,比如string,不初始化就是null值。
      

  2.   

    还有一个办法就是自己重写一个bool类型替换掉系统的bool类型。
    在新类型里面加入一个未赋值状态简单点也可以enum BOOL ={ false =0,true =1,non_init=2}
    反正我觉得用系统的那个bool你是解决不了这个问题的
      

  3.   

    oceanju(ocean)说的正确,使用反射时你得到的就是他的值。
    因为int,bool,byte等等都是值类型,是放在堆栈中的,
    在给他分配栈空间(也就是你新建一个)的时候就已经有了真实的值了。
    而string是引用类型,你新建一个引用类型的时候是把指针放在栈中,
    null就是说这个指针没有指向堆中的某个地址。平时我们如果写
    int i;
    Console.WriteLine(i.ToString());
    编译器会报错,但这只是编译器进行的检测而已,并不是说这时栈中就真的没东西
      

  4.   

    楼上的说话虽然过激,但是也有一定道理,这种问题真得不应该来讨论。
    bool就是用来表示true or false的,你要表示三个不同量用int不就好了。非要分清楚未初始化的bool变量和false干什么。写程序的时候就不应该允许bool变量未赋值得情况。
      

  5.   

    我也觉得用int来代替bool,像我写某个方法,返回值有大于两种的状态时,我就用int:
    0-不成功 1-成功  2-其他状态 3-....等等
      

  6.   

    是啊,完全可以用int型来代替呀,详细说说为什么一定要用bool阿,看看有没有变通的办法
      

  7.   

    我跟楼上的想法一样,用int来代替,象枚举那样。
      

  8.   

    turnmissile(会翻跟头的导弹) 说的好,其实很多时候我们都可以灵活一点处理,没有必要那么刻板