3

null を処理するためにこのコード行を書きましたが、expectedItem が null のときにこのコード行を実行すると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。何を与える?これはどう書くのが正しいのでしょうか?expectedItem が null であるため、expectedItem.ExpectedResultAmount も null であると予想されるため、このステートメントは空の文字列を x に割り当てる必要があります。

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

9 に答える 9

3

expectedItemそのプロパティではなく、null でないかどうかを確認する必要があります

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 は間違いなく null です:

string x;

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

簡単に言えば、それ自体をチェックするのではなく、null をexpectedItemチェックしているため、逆参照しています。あなたはおそらく書くべきですexpectedItem.ExpectedResultAmountexpectedItem

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

受け入れられた答えは「目には簡単ではない」であることが示唆されているので、あなたはこれを考慮するかもしれません:

string x = ""; //string is empty...
if (expectedItem != null && expectedItem.ExpectedResultAmount != null)
{
    x = expectedItem.ExpectedResultAmount; //...unless this exists.
}
于 2012-08-30T19:33:45.013 に答える
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 が null でないことを確認する必要があります。そうである場合は、null pointerと呼ばれる不正な操作が行われます。次に、空の文字列xを割り当てる必要があります。

null でない場合、このように記述します。

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

x は null またはexpectedItem.ExpectedResultAmountのいずれかです。たとえば、 xを null にしたくない場合は、Compare や Concat などの文字列操作を後で行います。また、そのメンバー ExpectedResultAmount も null でないことを確認する必要があります。 .

于 2012-08-28T23:43:05.017 に答える