FirstOrDefault vs IsNullOrDefault
本文关键字:IsNullOrDefault vs FirstOrDefault | 更新日期: 2023-09-27 18:14:06
我可以转换或使用这个IsNullOrDefault有些像FirstOrDefault我的意思是没有指定TSource?或者我应该如何修改该方法,使其类似于FirstOrDefault。
someList.FirstOrDefault()
<<简洁明了
someValue.IsNullOrDefault<int>()
<<我不想在这里说这是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
)
LINQ根据提供的值推断类型;如果为方法提供int值,只要在泛型定义和参数中都使用了T,它就会为您推断出类型。