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
)

FirstOrDefault vs IsNullOrDefault

LINQ根据提供的值推断类型;如果为方法提供int值,只要在泛型定义和参数中都使用了T,它就会为您推断出类型。