我有一个名为Profile
的公共类。非常简单的模型类目前有2个属性; string Name
和string Fields
。当我开发项目时,课程将会扩展,但目前并不是特别重要。
我的Global static IList
类型Profile
名为Profiles
。我很擅长操纵这些IEnumerable
类型的数据,但我希望更新单个配置文件的一个属性。我尝试了以下但我收到的对象引用没有设置异常。以下是我设置属性的地方:
Profiles.Single(x => x.Name == listBoxProfiles.Text).Fields = textBoxFieldName.Text;
调试器显示列表框和文本框文本属性都具有正确的值,所以我认为这是我使用单一错误的方式。
如果有人能说清楚,我将不胜感激。
答案 0 :(得分:1)
只需要一个简单的修正就是让代码更具防御性:
var profile = Profiles.SingleOrDefault(x => x.Name == listBoxProfiles.Text);
if (profile != null)
{
profile.Fields = textBoxFieldName.Text;
}
else
{
Profiles.Add(new Profile(textBoxFieldName.Text));
}
此代码将处理缺失值,SingleOrDefault
需要返回0或1个项目。如果找到超过1个项目,它将抛出异常。
如果您知道您的代码应始终包含您正在寻找的项目,那么您的代码将有效 - 但我建议不要采用这种编程风格,而是采取更具防御性的方式。