一个对象可以将它自己设置为null吗?

时间:2013-11-12 13:06:17

标签: c# .net

在C#中,对象是否有可能自杀,将其自设为null?

此= NULL;不起作用....

想要这样的话的原因是,例如,对象获取via构造函数中的数据并不好(出于任何原因),那么最好是null而不是垃圾。

状态标志是一种解决方法,但这是我的第二个最佳选择。

5 个答案:

答案 0 :(得分:10)

我建议你从构造函数中抛出一个ArgumentException,以防你从调用者那里收到有问题的数据。然后在调用代码中捕获它。

答案 1 :(得分:8)

没有对象不能将自己设置为null,它是可以设置为null的引用。

抛出ArgumentException insteed

答案 2 :(得分:5)

如果对象需要外部数据才能完成构造并使某些东西无法使用(或者根本没有数据),那么你需要做的就是抛出适当的异常。

更改this的值是非法的,即使不是,它也不会带来任何好处:来电者仍然必须确定施工期间发生的事情。

答案 3 :(得分:3)

您应该在构造函数中抛出异常;这将阻止对象一起创建:

 class MyClass {
       public MyClass(string value) {
           if (value == null)
               throw new ArgumentNullException("value");
           ... 
      }
 }

答案 4 :(得分:1)

在C ++中,您可以按照this的方式使用。

在C#中 - 仅限制使用。例如,您可以将struct分配给class',而不是分配给{{1}}'