我有几个地方使用了不受类 (或结构体) 限制的泛型类型参数,当我试图将该类型的变量与 null
进行比较时,Resharper 会将其下划线标记,并抱怨我可能正在将值类型与 null
进行比较(这确实是一个有效的反对意见)。是否有一种被接受的方法可以在比较之前检查变量是否为值类型?
例如:
public TObject MyProperty { get; set; }
...
private void SomeMethod()
{
if(MyProperty == null) //Warning here
{
...
}
}
我一直在使用if(!(MyProperty is ValueType) && MyProperty)
,这个语句是否有效?它并没有消除警告,但这并不一定意味着什么。
object
代替类型参数,但如果您想将操作数限制为相同类型怎么办?基本上,我认为在不知道变量是值类型还是引用类型时,比较变量与 null 的确有有效的用例。 - Turner Hayes