我读过Convert.ToString应该处理空,但它不工作。Convert.ToString当它传递一个空对象在我的代码</p> <p>在这种情况下,对象“名称”为空不处理空
var name = Convert.ToString(Name.LastName);
我得到的对象引用未设置为对象的实例。
我读过Convert.ToString应该处理空,但它不工作。Convert.ToString当它传递一个空对象在我的代码</p> <p>在这种情况下,对象“名称”为空不处理空
var name = Convert.ToString(Name.LastName);
我得到的对象引用未设置为对象的实例。
异常不是由Convert.ToString()
造成的。
由于您试图从空引用中获取LastName
的值,因此代码中存在异常。这会导致运行时异常。
要修复它,您需要检查Name
是否为空,然后再尝试访问LastName
。
var name = Name != null ? Convert.ToString(Name.LastName) : null;
这与Convert.ToString
无关。您正试图通过空引用访问LastName
。这是一个运行时异常。
Name
和LastName
都可以为空。如果Name
为空,则Convert.ToString
将永远不会在上面的代码中调用。
+1为空检查 – deltree 2012-02-08 22:23:56
处理此问题的最佳方法是什么? – 2012-02-08 22:24:02
检查名称是否为空。 – 2012-02-08 22:24:40
在这种情况下,当C#评估Name.LastName时,它会崩溃。这是因为你真的在评估Null.LastName,这是没有意义的。 Conver.ToString(空),将工作。
当Name
为空时,您无法访问null
的.LastName。
var name = Convert.ToString((Name != null) ? Name.LastName : "");
书面,你的代码说要做到以下几点:
Name
在内存中。LastName
场Name
Name.LastName
领域的Convert.ToString
方法name
在步骤2中你的代码没有因为Name
为空,有没有Name.LastName
字段可用,所以你永远不会让它到第3步。因此,Convert.ToString
是否正确处理空参数并不重要,因为NullReferenceException
在您甚至称为之前被抛出。
感谢....虽然,我用var name = Name!= null? Convert.ToString(Name.LastName):“”; – 2012-02-08 22:38:45
这个答案是错误的。看[这个问题](http:// stackoverflow。com/questions/10355736/why-does-convert-tostringnull -return-a-different-value-if-you-cast-null),原因是:因为即使Name不为null,如果Lastname为null,结果也会为空。 – shipr 2015-08-22 04:56:12
@shipr这与上面提到的问题无关。我的回答解决了原来的问题 - 导致运行时NullReferenceException的原因。 – 2015-09-01 14:37:52