2012-07-17 34 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作爲參數傳遞給方法。

這是一個bug還是resharper在這裏?

PS 1:我使用Resharper 6.1
PS 2:我知道使用string.IsNullOrEmpty()將是無論如何要去的地方。我只是好奇。

+1

你的班級從哪個班級派生?它是來自你還是來自.NET框架? – 2012-07-17 19:44:38

+0

是你的完整代碼嗎?我使用的是ReSharper 6.1,但沒有得到這個指示。 – 2012-07-17 19:46:12

+0

我從MembershipProvider派生(在System.Web.Security) – magnattic 2012-07-17 19:47:26

回答

15

可能將參數name標記爲[NotNull]。 Resharper提供常見BCL類的合同元數據。

+1

是否有任何理由以這種方式標記此方法參數?這是一個公共方法,什麼會阻止任何人用空參數調用它? – magnattic 2012-07-17 19:49:04

+0

合同元數據並不意味着100%準確。它意味着務實。我認爲這是件好事。 – usr 2012-07-17 19:49:58

+0

有趣的是,儘管[NotNull]代碼合同,ProviderBase也對名稱進行了NULL檢查。 – 2012-07-17 20:02:16

相關問題