Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件空检查上的NullReferenceException_C#_.net_Nullreferenceexception - Fatal编程技术网

C# 条件空检查上的NullReferenceException

C# 条件空检查上的NullReferenceException,c#,.net,nullreferenceexception,C#,.net,Nullreferenceexception,对于以下代码行: Class1 Obj1 = GetObjByID(ID); if (Obj1!= null) { Obj1.IsAgentReserved = true; // causing exception here Obj2.EstDeviceID = Obj1.Extension; } 我有异常System.NullReferenceException:对象引用未设置为对象的实例。在Obj1.IsAgentReserved=true时;,虽然我在这之前有

对于以下代码行:

Class1 Obj1 = GetObjByID(ID); 
if (Obj1!= null) 
{ 
     Obj1.IsAgentReserved = true; // causing exception here
     Obj2.EstDeviceID = Obj1.Extension; 
}
我有异常System.NullReferenceException:对象引用未设置为对象的实例。在Obj1.IsAgentReserved=true时;,虽然我在这之前有空检查

可能的原因是什么?这种情况偶尔发生,我无法重现

我检查了以下事项: 1. != 运算符没有重载 2.Stacktrace在我看来是正确的
3.当前版本的代码与stacktrace匹配这可能发生在多线程应用程序中,其中另一个线程删除了您之间的对象!空检查及其使用。

IsAgentReserved是属性吗?如果是,setter的代码是什么样子的?如果抛出异常后Obj1实际上为null?它必须是导致异常的其他对象。GetObjByDid;返回Class1类的对象?这是实际代码吗?你真的有一个叫做Class1的类吗?在这种情况下没有;由于Obj1是一个局部变量,其他线程不可能将其更改为null。它不能将变量值设置为null,但它可以破坏它所指向的对象,这很可能是一个共享对象。我假设这是C,其中只有垃圾收集器销毁对象——当局部变量引用该对象时,它不会这样做是的,Jonas你是对的。当我有它的引用时,不应该破坏它的C和变量。@m abrar为您重新标记,记住提供好的标记,因为它增加了常驻C专家看到您的问题的可能性:-