2012-01-05 42 views
2
protected override void OnTextInput(TextCompositionEventArgs e) 
{ 
    e.Handled = true; 
    DoSomething(e.Text); 
} 

如果我檢查null,CA很高興,但ReSharper說空檢查總是錯誤的。我不確定誰在這裏更值得信任......這似乎是ReSharper中的一個bug,理論上講,有人可以從我的類擴展並直接調用此方法傳遞null。但我想我只是想仔細檢查哪個工具是正確的,哪個人有錯誤。CA1062(代碼分析)不同意ReSharper - 誰贏?

+0

'e'空檢查? – CodesInChaos 2012-01-05 21:49:33

+2

出於好奇,ReSharper如果在某處添加了對OnTextInput的顯式調用並將其傳遞給null,它又會說什麼? – dgvid 2012-01-05 21:49:58

+0

我會添加'Contract.Requires(e!= null);' – CodesInChaos 2012-01-05 21:50:28

回答

7

它似乎是ReSharper中的一個錯誤,可能是因爲理論上,有人可能從我的類擴展並直接調用此方法傳遞null。

儘管看起來不太可能,但這完全是可能的。我會在謹慎的方面犯錯,並按照代碼分析建議做空檢查。