NULL引用错误

时间:2011-08-31 06:11:04

标签: c# asp.net

  

可能重复:
  What is a NullReferenceException in .NET?

当我尝试访问存储在对象中的值时,当值为null时,它会显示空引用错误。如何检查空值???

str = "<html>" + objName.Name + "</html>"

先谢谢

4 个答案:

答案 0 :(得分:4)

怎么样:

if(objName != null)
{
    str = "<html>" + objName.Name + "</html>"
}

答案 1 :(得分:4)

类似的东西:

if(objName != null && !string.IsNullOrEmpty(objName.Name))
{
  str = "<html>" + objName.Name + "</html>"
}

答案 2 :(得分:1)

检查以下对象的null:

str="<html>"+ objName != null ? objName.Name : string.empty + "</html>"

答案 3 :(得分:0)

简单案例:

str = "<html>" + (objName != null ? objName.Name : "") + "</html>";

性能更高:

if (objName == null)
   str = "<html></html>";
else
   String.Concat("<html">, objName.Name, "</html>");

if (objName == null) str = "<html></html>"; else String.Concat("<html">, objName.Name, "</html>");

如果你这么做很多,可以考虑使用StringBuilder,它可能看起来像:

var html = new StringBuilder();
html.Append("<html>");
html.Append(objName != null ? objName.Name : "");
...
html.Append("</html>";

如果要将多个标签一起添加,而不是使用StringBuilder,则需要执行以下操作: var html = new StringBuilder(); html.Append("<html>"); html.Append(objName != null ? objName.Name : ""); ... html.Append("</html>";

...你把一个+ =用新的部分和新的部分汇总。另请注意,“”实际上与String.Empty相同。使用“”而不是String.Empty可能会有很大帮助,直到您学会使代码更短且更易读。

代码:

str = "<html>" + (objName != null ? objName.Name : "") + "</html>";
str += "<script>" + (objName2 != null ? objName2.Name : "") + "</script>";

str = "<html>" + (objName != null ? objName.Name : "") + "</html>"; str += "<script>" + (objName2 != null ? objName2.Name : "") + "</script>";

......这将使这更容易弄明白。你应该尝试使用与此几乎相同的StringBuilder aproach。总的来说应该让它变得更容易,我保证:)

所以这里有一些问题:


string str;

如果objTest为null,则会失败,并生成



str = "<body lang=EN-US style='tab-interval:.5in'>";
str += "<div class=Section1>";
str += "<img img width=100 height=50 id='myImg' src='C:/test.jpg'>";
str += "<p style='font-weight:bold; color:green;'>";
str += "<u> Test Name </u></p>" + objTest.name.ToString() + "<br/>";
str += objname.name.ToString() != null ? string.Join(", ", objname.name.ToArray()) : String.Empty;
str += "</body> </html> "; 

意义不大。

您可能打算做这样的事情(对于你的objTest和objname): str = "<body lang=EN-US style='tab-interval:.5in'>"; str += "<div class=Section1>"; str += "<img img width=100 height=50 id='myImg' src='C:/test.jpg'>"; str += "<p style='font-weight:bold; color:green;'>"; str += "<u> Test Name </u></p>" + objTest.name.ToString() + "<br/>"; str += objname.name.ToString() != null ? string.Join(", ", objname.name.ToArray()) : String.Empty; str += "</body> </html> ";

`... + objTest.name.ToString() + ...`

这可以保护objname和objname.name。

更好的是: `objname.name.ToString() != null`

str += "<u> Test Name </u></p>" + (objname != null && objname.name != null ? objname.name.toString() : "") + "<br/>";