我的代码是......
public static void AssertNotNull<T>(string name, T val) {
if (val == null)
throw new ArgumentNullException(String.Format("{0} must not be null", name));
}
Run Code Online (Sandbox Code Playgroud)
Resharper推荐......
public static void AssertNotNull<T>(string name, T val) {
if (Equals(val, default(T)))
throw new ArgumentNullException(String.Format("{0} must not be null", name));
}
Run Code Online (Sandbox Code Playgroud)
Bea*_*rdo 13
因为它不知道是否T是值类型或引用类型,所以它使代码适用于两者.
Mic*_*ows 12
我是Berado的第二个答案,但是会补充一点,你可以通过添加下面的约束来防止这种情况:
public static void AssertNotNull<T>(string name, T val) where T : class
Run Code Online (Sandbox Code Playgroud)