Convert.ToString不处理null

时间:2012-02-08 22:20:29

标签: c# asp.net

我已经读过Convert.ToString应该处理null,但是当它在我的代码中传递一个空对象时它不起作用

在这种情况下,对象"名称"是空的。

var name = Convert.ToString(Name.LastName);

我没有将Object引用设置为对象的实例。

5 个答案:

答案 0 :(得分:10)

这与Convert.ToString无关。您正尝试通过空引用访问LastName。这是一个运行时异常。

此处NameLastName都可以为null。如果Convert.ToString为空,则永远不会在上面的代码中调用Name

答案 1 :(得分:3)

该异常不是由Convert.ToString()引起的。

您的代码中存在异常,因为您试图从空引用中获取LastName的值。这会导致运行时异常。

要解决此问题,在尝试访问Name之前,您需要检查LastName是否为空。

var name = Name != null ? Convert.ToString(Name.LastName) : null;

答案 2 :(得分:2)

在这种情况下,当C#评估Name.LastName时,它将崩溃。这是因为你真的在评估Null.LastName,这没有意义。 Conver.ToString(Null)将起作用。

答案 3 :(得分:2)

Name为空时,您无法访问null的.LastName。

var name = Convert.ToString((Name != null) ? Name.LastName : "");

答案 4 :(得分:1)

如上所述,您的代码说要执行以下操作:

  1. 在内存中找到对象Name
  2. 在对象LastName
  3. 上找到Name字段
  4. Name.LastName字段传递给Convert.ToString方法
  5. 将结果分配给name
  6. 您的代码在第2步失败。由于Name为空,因此没有Name.LastName字段可用,因此您永远不会进入第3步。因此,无论是否{ {1}}正确处理空参数,因为在您调用Convert.ToString之前已经抛出了NullReferenceException