C# 为什么我会得到“对象引用未设置为对象的实例”

C# 为什么我会得到“对象引用未设置为对象的实例”,c#,.net,C#,.net,可能重复: 对象引用未设置为对象的实例 代码试图访问设置为null的引用类型变量的成员 请发出源请求。QueryString[Role]不为null。您不应该捕获NullReferenceException 然而,问题似乎出现在第一行:try块之外的唯一一行 请求为null或QueryString[Role]返回null 共享堆栈跟踪以获得更清晰的答案。尝试 int Role = Convert.ToInt32(Request.QueryString["Role"] != null ?

可能重复:

对象引用未设置为对象的实例


代码试图访问设置为null的引用类型变量的成员

请发出源请求。QueryString[Role]不为null。

您不应该捕获NullReferenceException

然而,问题似乎出现在第一行:try块之外的唯一一行

请求为null或QueryString[Role]返回null

共享堆栈跟踪以获得更清晰的答案。

尝试

int Role = Convert.ToInt32(Request.QueryString["Role"] != null ?
                           Request.QueryString["Role"].ToString() : 
                           "0");
而不是

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString());
如果没有传递查询字符串,则需要检查null。

第一件事

int Role=Convert.ToInt32Request.QueryString[Role].ToString

此语句在try之外,因此,如果它在QueryString为null时崩溃,或者即使Convert.ToInt32方法抛出异常,也不会执行catch块

你可以试试这个代码

  int number;
  bool result = Int32.TryParse(Request.QueryString["Role"], out number);
  if (result)
  {
    // your implemntation       
  }
  else
  {        
    // your implemntation   
  } 

如果仍然出现此错误,您甚至可以使用Convert.ToStringRequest.QueryString[Role]。

.netc-这是您的回复。您的问题似乎缺少实际问题部分。。。仅请求回复.net C。此错误具体发生在何处?停止请求堆栈,停止在此场景中提供帮助-op应该在他/她的问题上投入一些精力,并遵循魔法.net中的NullReferenceException是什么?-主题…您所做的只是猜测。。。没有一堆你就不能给出一个合格的答案。事实是:它也可能是gv_viewAppenders或gv_viewAppenders_SelectedIndexChanged-method中的某个东西,该方法为null…由于op不提供堆栈,也可能是他正在处理的捕获范围。。。因此,gv_ViewAppenders也可能为空,或者gv_ViewAppenders_SelectedIndexChanged-Method中的某些内容如果是这种情况,是否会在没有任何通知的情况下捕获?场景非常不清楚。op可以在catch作用域中设置断点。不清楚异常是否会出现在ui中。。。所以任何事情都可能是。。。
int Role = Convert.ToInt32(Request.QueryString["Role"].ToString());
  int number;
  bool result = Int32.TryParse(Request.QueryString["Role"], out number);
  if (result)
  {
    // your implemntation       
  }
  else
  {        
    // your implemntation   
  }