C#是对象有效的

Mer*_*rni 2 c# pointers

您可以检查对象是否为null,但是您可以检查对象是否有效吗?

Assert.IsValid(object_name);
Run Code Online (Sandbox Code Playgroud)

例如,垃圾收集器已删除该对象,或者某人已对其进行了处置.但指针仍然指向该对象.

Jon*_*eet 7

如果对象已被垃圾收集器释放,则根据定义,您将不会引用该对象.

如果它被处理掉并且对于对象的有效性很重要,那么类型应该提供一种确定它的方法.(例如,在某些情况下Dispose,只能表示"重置".)

即使允许引用已处置对象的可能性,也很少适用 - 如果您使用:

using (Foo foo = new Foo())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后该对象将在foo超出范围的同时处理,因此这不是问题.