+ -
当前位置:首页 → 问答吧 → 自定义的类,怎样才能new出null?

自定义的类,怎样才能new出null?

时间:2011-12-13

来源:互联网

我自定义了类myClass,需要在某个条件C==true下,让new myClass()的结果为null,怎么写代码能达到这个目的呢?是否应该在构造函数里面写,类似下面的代码:
C# code

    public class myClass
    {
        public myClass()
        {
            if (C)
            {
                //构造出null
            }
        }
    }

大致的逻辑是上面的样子,但是具体代码怎么写呢?多谢指教!

作者: jshzp   发布时间: 2011-12-13

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

作者: bdmh   发布时间: 2011-12-13

new绝对不能返回null,即使内存不足,也会抛出异常而不会反悔null,

你应该把判断条件从构造函数移动到new语句处,可以定义一个静态方法:

  public class myClass
  {
  public myClass()
  {
  }

  public static myClass CreateInstance()
  {
  if (C)
  { 
  return null;
  }
  return new myClass();
  }
  }

外边new的地方改为调用myClass.CreateInstance

作者: stonespace   发布时间: 2011-12-13

以前好像看到过这个问题,要停止构造,就是不记得当初别人怎么回答的,反正我不知道
但你可以换个思路来做啊

你可以
C# code
public class myClass
{
   private myClass()
   {
   }
   public myClass MyClass
   {
       get
       {
           return c?null:new myClass();
       }
   }   
}


作者: starfd   发布时间: 2011-12-13

要使用工厂方法 或者类似单例

作者: Sandy945   发布时间: 2011-12-13

引用 1 楼 bdmh 的回复:
那就别用构造函数了,定义个方法
public myClass GetMyClass()
{
if (c)
return null;
else
.....
}

从道理上来说这么写可以达到目的,只是觉得写在构造函数里面,代码好看些。。。望继续指点!

作者: jshzp   发布时间: 2011-12-13

直接返回一个null不可以吗?

作者: koooky   发布时间: 2011-12-13

引用 3 楼 starfd 的回复:
以前好像看到过这个问题,要停止构造,就是不记得当初别人怎么回答的,反正我不知道
但你可以换个思路来做啊

你可以

C# code

public class myClass
{
private myClass()
{
}
public myClass MyClass
{
get
{
r……

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

作者: jshzp   发布时间: 2011-12-13

没有试验出来…… mark下

作者: yanbuodiao   发布时间: 2011-12-13