我可以转换或使用这个IsNullOrDefault有些像FirstOrDefault我的意思没有指定TSource吗?或者我应该如何修改方法使其类似于FirstOrDefault。
someList.FirstOrDefault()
<<<简单干净
someValue.IsNullOrDefault<int>()
&lt;&lt;&lt;我不想在这里说这是int
public static bool IsNullOrDefault<T>(this T argument)
{
// deal with normal scenarios
if (argument == null) return true;
if (object.Equals(argument, default(T))) return true;
// deal with non-null nullables
Type methodType = typeof(T);
if (Nullable.GetUnderlyingType(methodType) != null) return false;
// deal with boxed value types
Type argumentType = argument.GetType();
if (argumentType.IsValueType && argumentType != methodType)
{
object obj = Activator.CreateInstance(argument.GetType());
return obj.Equals(argument);
}
return false;
}
public static TSource FirstOrDefault<TSource>(
this IEnumerable<TSource> source
)
答案 0 :(得分:0)
LINQ根据提供的值推断类型;如果你为方法提供一个int值,只要在泛型定义和参数中都使用了T,它就会推断出你的类型。