何时在C#的LINQ中使用.First(),何时使用.FirstOrDefault()?
大家好!我最近开始学习C#和LINQ,遇到了一个不太明白的情况。有两个类似的方法:`.First()` 和 `.FirstOrDefault()`。我知道它们都返回序列的第一个元素,但它们之间有什么区别呢?
假设我有一个用户列表:
```csharp
List users = new List { "Alice", "Bob", "Charlie" };
```
如果我写:
```csharp
string firstUser = users.First(u => u.StartsWith("Z"));
```
那么我会得到一个 `InvalidOperationException` 异常。而如果我使用 `.FirstOrDefault()`:
```csharp
string firstUser = users.FirstOrDefault(u => u.StartsWith("Z"));
```
则没有异常,`firstUser` 等于 `null`。
但什么时候该用哪个更合适呢?我读到过,`.First()` 在没有找到元素时会抛出异常,而 `.FirstOrDefault()` 会返回默认值。但我不太清楚,在哪些场景下应该冒险使用异常,哪些场景下最好返回 `null` 或默认值。