0

クラス参照がnullであるかどうかは気にしないことをプログラムに伝える方法はありますか?例えば:

if (playermove[i].name == "punch" || ispunchactivated == true)
{
    Do the punch;
}

なぜ彼はplayermove(nullになる可能性があります)を検索し、nullの例外エラーを表示するのですか?ispunchactivateがtrueであるかどうかは本当に気にしません。

ありがとう。

4

6 に答える 6

9

2つの条件を逆にすると、次のようになります。

ispunchactivated /*== true*/ || playermove[i].name == "punch"
                 // this isn't necessary

次に、最初のものが真の場合、2番目のものはチェックされません。

ただし、がfalseの場合にnullにならないことがわかっている 場合を除き、実際にはnullチェックも行う必要があります。そうしないと、例外が発生します。playermove[i]ispunchactivated

ispunchactivated ||
    (playermove[i] != null && playermove[i].name == "punch")
于 2012-11-15T09:12:32.937 に答える
4

最初にnullをチェックするだけです。
ここにショートカットはありません。

if (playermove == null || playermove[i].name == "punch" || ispunchactivated == true)
{
    Do the punch;
}
于 2012-11-15T09:11:55.887 に答える
3

if条件は次のように変更できます。

if (ispunchactivated == true || (playermove!=null && playermove[i].name == "punch" ))
于 2012-11-15T09:12:21.363 に答える
3

これを試して、

if ((ispunchactivated == true) || (playermove[i] != null && playermove[i].name == "punch" ))
{
    Do the punch;
}
于 2012-11-15T09:12:46.487 に答える
2

条件を交換するだけで、短絡するとそれが可能になります。

if (ispunchactivated == true || playermove[i].name == "punch")
{
    Do the punch;
}

playermove[i]ispunchactivatedがfalseの場合にのみ評価されます。ispunchactivatedそうは言っても、がfalseでnullの場合でも、nullポインタ例外が発生する可能性がplayermove[i]あります。

于 2012-11-15T09:13:11.213 に答える
1

次のように条件を変更します。

if(playermove !=null && playermove[i] != null)
{
    if (playermove[i].name == "punch" || ispunchactivated == true)
    {
        Do the punch;
    }
}
于 2012-11-15T09:13:41.340 に答える