什么是使用的点First在LINQ运营商时,你可以使用FirstOrDefault操盘手?
var q = results.First(); // Error if empty
Run Code Online (Sandbox Code Playgroud)
Dav*_*fer 17
要直接回答您的具体问题(First如果您可以随时使用FirstOrDefault,为何使用),有些情况下您无法使用FirstOrDefault,因为它会丢失信息!"默认值"可能是源列表中的有效元素类型.您无法区分枚举中的第一个元素是null/default与列表中没有元素,除非您使用First或首先检查是否存在Any需要双枚举的元素.
对于值类型的枚举,尤其如此int[].default(int)是0,这也很可能是数组的有效值.
通常,这两种方法代表不同的逻辑流程.First如果没有任何元素是"例外"(一个错误),然后想要在你的应用程序中处理带外,将使用它.在这种情况下,您"期望"至少拥有一个元素.FirstOrDefault在空集上返回null,这意味着您需要使用返回的值执行其他处理.这与//etc 上的Parsevs TryParse方法类似.事实上,您的问题在某些方面导致了更为笼统的问题,即为什么要使用例外.intdouble
由于First抛出一个异常,它本身借给所有的代码重用机会,异常提供.例如,您可以这样做:
try
{
x = arr1.First();
y = arr2.First();
z = arr3.First();
}
catch
{
throw new ArgumentException();
}
Run Code Online (Sandbox Code Playgroud)