0

ユーザーオブジェクトがあり、userIDという名前の変数があります。

私は2つのことをテストしたいと思います:

  • ユーザー==null
  • user.UserID!= userID

2番目のテストは、ユーザーがnullでない場合にのみ実行する必要があります。そうでない場合は、ランタイムエラーが発生します。

以下のように、同じ行で両方をテストすることは可能かどうか疑問に思います。

return ((user == null) && (user.UserID != userID))

しかし、ユーザーがnullの場合、ランタイムエラーが発生するため、上記のようにコーディングしても機能しません。

ありがとう。

4

3 に答える 3

1

C#を想定しており、ユーザーがnullの場合、またはuseridがuser.UserIDと異なる場合は、ブール値==trueが必要であると想定しています。したがって、答えは次のとおりです。

return ((user == null) || (user.UserID != userID));

OR論理演算子は、左端の条件から始まる真の条件が見つかるとすぐに、式の評価を停止します。

この場合、ユーザーがnullの場合、結果(True)が得られ、2番目の条件をテストする必要がないため、null参照例外を回避できます。

于 2012-04-14T14:36:36.273 に答える
0

はい、1行でチェックできますが、or条件を使用する必要があります

return ((user == null) || (user.UserID != userID))
于 2012-04-14T14:35:43.870 に答える
-1

私が最も読みやすいと思う方法は次のとおりです。

ユーザーがnullの場合にtrueが必要な場合:

return user == null || user.UserID != userID

最初の条件満たされた場合(それが真である場合)、2番目の条件はチェックされません。

または、ユーザーがnullの場合にfalseが必要な場合:

return user != null && user.UserID != userID

最初の条件が満たされない場合(falseの場合)、2番目の条件はチェックされません。&&との力||=)

于 2012-04-14T14:42:02.753 に答える