我自定义了类myClass,需要在某个条件C==true下,让new myClass()的结果为null,怎么写代码能达到这个目的呢?是否应该在构造函数里面写,类似下面的代码:    public class myClass
    {
        public myClass()
        {
            if (C)
            {
                //构造出null
            }
        }
    }
大致的逻辑是上面的样子,但是具体代码怎么写呢?多谢指教!

解决方案 »

  1.   

    那就别用构造函数了,定义个方法 
    public myClass GetMyClass()
    {
    if (c)
      return null;
    else
      .....
    }
      

  2.   

    new绝对不能返回null,即使内存不足,也会抛出异常而不会反悔null,你应该把判断条件从构造函数移动到new语句处,可以定义一个静态方法:    public class myClass
        {
            public myClass()
            {
            }        public static myClass CreateInstance()
            {
                if (C)
                { 
                      return null;
                }
                return new myClass();
            }
        }外边new的地方改为调用myClass.CreateInstance
      

  3.   

    以前好像看到过这个问题,要停止构造,就是不记得当初别人怎么回答的,反正我不知道
    但你可以换个思路来做啊你可以
    public class myClass
    {
       private myClass()
       {
       }
       public myClass MyClass
       {
           get
           {
               return c?null:new myClass();
           }
       }   
    }
      

  4.   

    感觉挺好,但是没太看懂。public myClass MyClass   {}这句话写错了吗?
      

  5.   


    public static myClass MyClass
    这样才对,跟上面几楼都是一样的意思,不直接通过new来创建对象,而是通过static的属性来获取,当然本质还是通过new,这跟1楼还是一样的意思
      

  6.   

    刚刚申明了就是null,
    如 datatable dt;
      

  7.   

    这样好像不行吧,new关键字就是用来实例化对象的,new一个null,感觉矛盾了。换个思路吧,加个类似于DBNull.Value之类的东西获取吧