2012-07-17 3 views
12

私は私のカスタムのMembershipProviderにこのコードを持っている:文字列をnullと比較する - なぜResharperはこれが常に偽であると思いますか?

public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) 
{ 
    if (config == null) 
     throw new ArgumentNullException("config"); 

    if (name == null) 
     name = "MyCustomMembershipProvider"; 
    ... 
} 

ReSharperのは、if文秒をマークし、私に語った、それは常にfalseと評価されてしまうからです。

resharper message

しかし、なぜこれは常にfalseと評価されますか?私は簡単にパラメータとしてメソッドにnullを渡すことができます。

これはバグですか?またはResharperですか?

PS 1:私はResharper 6.1を使用しています。
PS 2:string.IsNullOrEmpty()を使用すると、とにかくここに行く方法がわかります。私はちょうど興味がある。

+1

あなたのクラスはどのクラスから派生していますか?それはあなたからのものなのか、.NETフレームワークからのものなのでしょうか? –

+0

完全なコードですか?私はReSharper 6.1を使用していますが、その兆候はありません。 –

+0

私はMembershipProvider(System.Web.Security)から派生しています – magnattic

答えて

15

おそらく、引数name[NotNull]とマークされている可能性があります。 Resharperには、一般的なBCLクラスの契約メタデータが付属しています。

+1

この方法のパラメータをこのようにマークする理由はありますか?パブリックメソッドです。ヌルパラメータで誰かが呼び出すのを止めるのはなぜですか? – magnattic

+0

契約メタデータは100%正確であることを意図していません。それは実用的であることを意味する。それは良いことだと思う。 – usr

+0

興味深いことに、ProviderBase ALSOは、[NotNull]コード契約にもかかわらず、名前のNULLチェックを行います。 –

関連する問題