C# FirstOrDefault()和FirstOrDefault之间的差异<;MyClass>;()?
如果C# FirstOrDefault()和FirstOrDefault之间的差异<;MyClass>;()?,c#,linq,extension-methods,C#,Linq,Extension Methods,如果FirstOrDefault()没有返回值,那么返回值为null,那么从FirstOrDefault()返回的是什么?哪种是最佳做法 在某些情况下,最好使用FirstOrDefault(),因为如果调用没有返回任何内容,最好返回null并进行检查。没有FirstOrDefault(),任何时候看到它,编译器都会为您填写。实际签名是 public static TSource FirstOrDefault<TSource>( this IEnumerable<TSou
FirstOrDefault()
没有返回值,那么返回值为null,那么从FirstOrDefault()
返回的是什么?哪种是最佳做法
在某些情况下,最好使用
FirstOrDefault()
,因为如果调用没有返回任何内容,最好返回null并进行检查。没有FirstOrDefault()
,任何时候看到它,编译器都会为您填写
。实际签名是
public static TSource FirstOrDefault<TSource>(
this IEnumerable<TSource> source)
publicstatictsourcefirstordefault(
这是(不可数的来源)
您正在调用它的
IEnumerable
提供了要填写的信息。没有FirstOrDefault()
,只要您看到它,编译器就会为您填写
。实际签名是
public static TSource FirstOrDefault<TSource>(
this IEnumerable<TSource> source)
publicstatictsourcefirstordefault(
这是(不可数的来源)
您正在调用它的
IEnumerable
提供了要填写的信息。那么,如果您获取一个空集合并调用它的FirstOfDefault()
,会发生什么?这是一个单行程序。使用泛型参数,您只是更具体地了解编译器提供的信息。因此,如果您获取一个空集合并对其调用FirstOfDefault()
,会发生什么情况?这是一个单行程序。对于泛型参数,您只是对编译器提供的信息更加具体。确切地说,因为方法FirstOrDefault()
返回default(TSource)
,而不仅仅是null
,它需要推断类型。因此,即使您没有显式地命名类型,编译器也会计算出来。确切地说,因为方法FirstOrDefault()
返回default(TSource)
,而不仅仅是null
,它需要推断类型。因此,即使您没有显式地命名类型,编译器也会计算出来。