Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 对对象的方法调用不会引发异常_C#_Asp.net_.net - Fatal编程技术网

C# 对对象的方法调用不会引发异常

C# 对对象的方法调用不会引发异常,c#,asp.net,.net,C#,Asp.net,.net,这些天我遇到了:-) 我已经在ASP.Net应用程序中测试了以下两个代码。当字符串值为null时,代码1抛出异常(如预期的那样),而代码2不抛出异常(与预期相反) 为什么在这种情况下“EVAL”不会引发异常 EVAL会一直这样工作(即“无例外”)还是只是运气 是否有任何MSDN引用表明“Eval”返回空字符串 //代码1:导致异常 string test = Convert.ToString(subscriber.EncryptedSSN).Substring(0, Convert.ToStr

这些天我遇到了:-)

我已经在ASP.Net应用程序中测试了以下两个代码。当字符串值为null时,代码1抛出异常(如预期的那样),而代码2不抛出异常(与预期相反)

  • 为什么在这种情况下“EVAL”不会引发异常
  • EVAL会一直这样工作(即“无例外”)还是只是运气

  • 是否有任何MSDN引用表明“Eval”返回空字符串
  • //代码1:导致异常

     string test = Convert.ToString(subscriber.EncryptedSSN).Substring(0, Convert.ToString(subscriber.EncryptedSSN).Length >= 5 ? 5 : Convert.ToString(subscriber.EncryptedSSN).Length);
    
    //代码2:不引发异常

     <%# Convert.ToString(Eval("EncryptedSSN")).Substring(0, Convert.ToString(Eval("EncryptedSSN")).Length  >= 5 ? 5 : Convert.ToString(Eval("EncryptedSSN")).Length)  %>
    
    =5?5:Convert.ToString(Eval(“EncryptedSSN”).Length)%>
    
    参考资料


  • 您的
    评估结果是什么?可能是
    字符串。空的
    而不是空的,在这种情况下,你不会得到异常。

    你的
    求值是什么?可能是
    String.Empty
    而不是null,在这种情况下,您不会得到异常。

    您的场景似乎不正确。第一个在.NET 4上对我来说并不例外:

    object foo = null;
    
    string test = Convert.ToString(foo).Substring(0, Convert.ToString(foo).Length >= 5 ? 5 : Convert.ToString(foo).Length);
    
    这是因为
    Convert.ToString()

    String.Empty不为null,它是长度为0的字符串,因此在对其调用方法时不会引发异常


    通过一点搜索,我找到了一个示例,它解释了ASP中的数据绑定,并解释了“在运行时,Eval方法调用DataBinder对象的Eval方法”。返回一个对象,因此
    Convert.ToString(Eval(Something))
    至少会返回
    String.Empty
    ,因此如果您试图访问其结果的成员或属性,则不会引发NullReferenceException。

    您的场景似乎不正确。第一个在.NET 4上对我来说并不例外:

    object foo = null;
    
    string test = Convert.ToString(foo).Substring(0, Convert.ToString(foo).Length >= 5 ? 5 : Convert.ToString(foo).Length);
    
    这是因为
    Convert.ToString()

    String.Empty不为null,它是长度为0的字符串,因此在对其调用方法时不会引发异常


    通过一点搜索,我找到了一个示例,它解释了ASP中的数据绑定,并解释了“在运行时,Eval方法调用DataBinder对象的Eval方法”。返回一个对象,因此
    Convert.ToString(Eval(Something))
    至少会返回
    String.Empty
    ,这样,如果您试图访问其结果的成员或属性,就不会引发NullReferenceException。

    如果您能想出一个较短的示例,这将非常有帮助—最好是在独立的控制台应用程序中。我不知道这里有什么
    Eval
    。@JonSkeet我添加了ASP.Net标记并更新了问题我强烈认为Eval返回
    string.Empty
    ,而不是
    null
    。如果你能想出一个简短的例子,那会很有帮助-最好是在独立的控制台应用程序中。我甚至不知道这里有什么…@JonSkeet我添加了ASP.Net标记并更新了问题我强烈假设Eval返回
    string.Empty
    而不是
    null
    。试着用“string foo”而不是“object foo”@Lijo这不是你所说的“奇怪场景”,它是:“
    Convert.ToString(string)”
    返回指定的字符串实例;不执行实际转换”。如果您传递它
    null
    ,它将返回
    null
    ,因此将发生异常。既然您知道了这一点,我希望您能够了解为什么会发生NullReferenceException,您可以做些什么来防止它,以及为什么
    Eval()
    one不会抛出异常(它必须返回非null字符串,或非字符串值或对象)。是否有任何MSDN引用说
    Eval
    返回空字符串?请尝试使用“string foo”它不是您所说的“奇怪场景”的“object foo”@Lijo,而是:“
    Convert.ToString(String)
    返回指定的字符串实例;不执行实际转换”。如果您传递它
    null
    ,它将返回
    null
    ,因此将发生异常。既然您知道了这一点,我希望您能够了解为什么会发生NullReferenceException,您可以做些什么来防止它,以及为什么
    Eval()
    one不会抛出异常(它必须返回非null字符串,或非字符串值或对象)。是否有任何MSDN引用说
    Eval
    返回空字符串?