2

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

这=空;没用……

想要这样的原因是,例如,如果对象通过构造函数获取数据,这不是好的(出于任何原因),那么它可能比垃圾更好。

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

4

5 回答 5

10

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

于 2013-11-12T13:08:20.423 回答
8

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

只是扔一个ArgumentExceptioninsteed

于 2013-11-12T13:09:50.963 回答
5

如果对象需要外部数据来完成它的构造并且得到一些不可用的东西(或根本没有数据),那么你需要做的是抛出一个适当的异常。

更改 的值this是非法的,即使不是这样也不会带来任何好处:调用者仍然必须确定在构造过程中发生了什么。

于 2013-11-12T13:08:26.420 回答
3

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

 class MyClass {
       public MyClass(string value) {
           if (value == null)
               throw new ArgumentNullException("value");
           ... 
      }
 }
于 2013-11-12T13:09:40.850 回答
1

this在 C++ 中,您可以随心所欲地玩。

在 C# 中 - 仅以受限方式。例如,您可以将struct's 分配给某物,但不能将class'this 分配给某物

于 2013-11-12T13:13:11.000 回答