我有幾個地方,我有一個不限於類(或結構)的泛型類型參數,並且當我嘗試比較該類型的變量與null
時,Resharper強調它,抱怨說我可能會比較一個值鍵入到null
(肯定有效的異議)。在比較null之前,是否有一種可接受的方法來檢查變量是否爲值類型?如何測試變量是否是C#中的值類型?
例如:
public TObject MyProperty { get; set; }
...
private void SomeMethod()
{
if(MyProperty == null) //Warning here
{
...
}
}
我一直在做if(!(MyProperty is ValueType) && MyProperty)
--is是有效的?它沒有擺脫警告,但這並不一定意味着什麼。
順便說一句,沒有「C#.NET」這樣的東西。該語言被命名爲「C#」。 –
如果最終_wanting_將Value類型與null比較,則會產生更深層次的問題。 –
在這種情況下,您不需要執行檢查 - 如果MyProperty是值類型,則等於將返回false。編譯器將首先編寫代碼將MyProperty轉換爲可空的。警告仍然有效,因爲它表明你在打字時鬆懈。 –