我编写了这行代码来处理空值,但是当expectItem为null时,每当我运行这行代码时,我仍然会得到“对象引用未设置为对象的实例”错误。是什么赋予了?写这个的正确方法是什么? 由于expectedItem为null,我希望expectedItem.ExpectedResultAmount也为null,因此该语句应该为x分配一个空字符串。
string x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
答案 0 :(得分:3)
您需要检查expectedItem
是否为空,而不是其属性
string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";
答案 1 :(得分:1)
你的期望是错误的。尝试
string x = expectedItem == null ? "" : expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
答案 2 :(得分:1)
expcetedItem无疑是null:
string x;
if (expectedItem != null)
x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
答案 3 :(得分:1)
简短回答:您要取消引用expectedItem
,因为您正在检查expectedItem.ExpectedResultAmount
是否为空,而不是检查expectedItem
本身。你应该写
string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";
答案 4 :(得分:1)
您应该检查对象实例(expectedItem)和属性(expectedItem.ExpectedResultAmount),否则可能会失败:
string x = expectedItem != null && expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
答案 5 :(得分:0)
expectedItem为空。
if( expectedItem != null)
x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
else
x = "poop";
答案 6 :(得分:0)
试试这个
string x = expectedItem != null && expectedItem.ExpectedResultAmount != null
? expectedItem.ExpectedResultAmount
: string.Empty;
答案 7 :(得分:0)
编写代码的正确方法如下:
string x = expectedItem != null ? (expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "") : "";
首先必须确保expectedItem不为null,如果是,则会有一个名为null pointer的非法操作;然后你应该为 x 分配一个空字符串。
如果它不是null,你就像这样写
string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";
x可以是null或 expectedItem.ExpectedResultAmount ,如果您不希望 x 为null,例如,您将在以后对其进行字符串操作,例如作为Compare或Concat,您还应该确保其成员ExpectedResultAmount也不为空。
答案 8 :(得分:0)
有人建议接受的答案是“眼睛不容易”,你也可以考虑这个:
string x = ""; //string is empty...
if (expectedItem != null && expectedItem.ExpectedResultAmount != null)
{
x = expectedItem.ExpectedResultAmount; //...unless this exists.
}