2012-04-14 6 views
0

私はユーザーオブジェクトを持っており、userIDという名前の変数があります。nullと他のコードを同じコード行でテストする

私は2つのことをテストしたいと思います!=第二の試験は、ユーザーがそうでない場合はnullでない場合にのみ、ユーザーID

を行わなければなりません

  • ユーザー== nullの
  • user.UserIDを私はランタイムエラーがあります。

    私はそれは、同じ行に以下のようなものの両方をテストすることが可能であるかどうか疑問:

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

    をしかし、上記のようにコーディングされたユーザーがnullのとき、私はランタイムエラーを持っているので、動作しません。

    ありがとうございました。

答えて

0

を使用する必要がありますuser.UserIDとは異なります。だから、答えは次のとおりです。

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

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

この場合、userがnullの場合、結果は(True)になり、2番目の条件をテストする必要がないため、null参照例外が回避されます。

0

はい、私はC#のを前提とし、ユーザーがnull ORユーザーIDであるとき、あなたは真のブール値==をしたいというあなたは1行でチェックを行うことができますが、or条件に

return ((user == null) || (user.UserID != userID)) 
-1

私は読むことが最も簡単だと思う方法は次のとおりです。

ユーザーがnullの場合は、をしたい場合:

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

最初の条件が満たされた場合には、その後、(それは本当です)それは秒をチェックしません。

またはユーザーがnullの場合は、をしたい場合:

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

最初の条件はされていない場合は、それが第二のためにチェックしません、(それは偽です)会いました。 &&||の力=)

関連する問題