3

我编写了这行代码来处理空值,但是当我在 expectedItem 为空时运行这行代码时,我仍然会收到“对象引用未设置为对象的实例”错误。是什么赋予了?写这个的正确方法是什么?由于expectedItem 为null,我希望expectedItem.ExpectedResultAmount 也为null,因此该语句应为x 分配一个空字符串。

string x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
4

9 回答 9

3

您需要检查是否expectedItem不为空,而不是其属性

string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";
于 2012-08-28T23:23:20.010 回答
1

你的期望是错误的。尝试

string x = expectedItem == null ? "" : expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
于 2012-08-28T23:23:45.487 回答
1

expcetedItem 无疑为空:

string x;

if (expectedItem != null)
    x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
于 2012-08-28T23:23:48.150 回答
1

简短的回答:您取消引用expectedItem是因为您正在检查expectedItem.ExpectedResultAmountnull 而不是检查expectedItem自身。你可能应该写

string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";
于 2012-08-28T23:24:06.127 回答
1

您应该检查对象实例 (expectedItem) 和属性 (expectedItem.ExpectedResultAmount),因为两者都可能失败:

string x = expectedItem != null && expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
于 2012-08-28T23:32:21.090 回答
0

预期项目为空。

if( expectedItem != null)
  x = expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "";
else 
  x = "poop";
于 2012-08-28T23:24:00.230 回答
0

试试这个

string x = expectedItem != null && expectedItem.ExpectedResultAmount != null
    ? expectedItem.ExpectedResultAmount
    : string.Empty;
于 2012-08-28T23:30:24.317 回答
0

编写代码的正确方法如下:

string x = expectedItem != null ? (expectedItem.ExpectedResultAmount != null ? expectedItem.ExpectedResultAmount : "") : "";

您首先必须确保 expectedItem 不为空,如果是,您将有一个称为空指针的非法操作;然后,您应该为x分配一个空字符串。

如果它不为空,你就这样写

string x = expectedItem != null ? expectedItem.ExpectedResultAmount : "";

x 可以为 null 或expectedItem.ExpectedResultAmount,如果您不希望x为 null,例如,您稍后将对它进行字符串操作,例如 Compare 或 Concat,您还应确保其成员 ExpectedResultAmount 也不为 null .

于 2012-08-28T23:43:05.017 回答
0

正如建议的那样,公认的答案是“不容易”,您也可以考虑一下:

string x = ""; //string is empty...
if (expectedItem != null && expectedItem.ExpectedResultAmount != null)
{
    x = expectedItem.ExpectedResultAmount; //...unless this exists.
}
于 2012-08-30T19:33:45.013 回答