c# - 在 foreach 循环中使用 Dictionary.add 时,执行似乎无缘无故停止
问题描述
这真的让我感到困惑,因为我无法弄清楚我的方法执行突然停止的任何明显原因。
我下面的方法相对简单,我所做的只是遍历对象集合并根据当前数据将一些数据添加到新字典中。
public Dictionary<string, string> MapValidationErrorToIdentifiers(List<ErrorField> errors)
{
var mappings = new Dictionary<string, string>();
foreach (var error in errors)
{
string identifier;
if (error.CollectionIndex == "")
{
identifier = error.Section + "-" + error.FieldName.Replace(" ", "-");
}
else
{
identifier = error.Section + "-" + (error.CollectionIndex + 1) + "-" + error.FieldName.Replace(" ", "-");
}
identifier = identifier.ToLower();
mappings.Add(identifier, error.Message);
}
return mappings;
}
输入对象List<ErrorField>
由ErrorField
简单的 DTO 对象组成。
public class ErrorField
{
public string FieldName { get; set; }
public string Section { get; set; }
public string CollectionIndex { get; set; }
public string Message { get; set; }
}
在一个实例中测试此方法的过程中,errors
输入对象包含 12 个ErrorField
对象,foreach 成功完成了一次迭代,并将键值对添加到字典中。然后在第二次迭代中,该方法一直运行到mappings.Add(identifier, error.Message);
调用为止,此时调试器完全停止并且不再执行。
这里奇怪的是执行只是停止,没有抛出异常或错误。此方法是较大的 ASP.NET 项目的一部分,并且此方法在控制器中使用。当执行停止时,它会导致我的端点返回 404。不确定这是否相关。
解决方案
推荐阅读
- javascript - 正则表达式提取特定模式的段落
- swift - Swift4 - Xcode 9 PCH 错误
- c++ - 使用 BOOST property_tree / iostreams / filesystem / foreach - 导致链接错误
- javascript - JavaScript 承诺初学者
- php - 如何在 JSON 中打印 max() 值
- ruby-on-rails - ActiveStorage Rails 5.2.0 的默认值
- spring-boot - 带有客户端连接工厂的入站适配器上的 client-mode="true" 和 retryInterval
- google-cloud-vision - 如何使用 Google Vision API 检测剪掉的头部?
- c# - 在c#中上传图片
- reactjs - React Webpack 4 解决别名