重新更新“键”;value与"ForEach"没有反映
本文关键字:quot ForEach value 更新 新更新 | 更新日期: 2023-09-27 18:09:13
我有一个下面的类,我在这里设置"Key"值,
public class DataCls
{
private string _key;
public string Message { get; set; }
public string Priority { get; set; }
public string Key
{
get
{
return _key = $"{Message}:{Priority}";
}
set
{
_key = value;
}
}
}
现在,当我添加一些"Message"answers"Priority"时,"Key"值会自动出现,
List<DataCls> lstData = new List<DataCls>
{
new DataCls {Message="M1", Priority="P1" },
};
。我想再次用"ABC"更新"Key"值。
我尝试了下面的"ForEach",但更新的"键"值("ABC")没有反映到列表"lstData",我错过了什么?
lstData.ForEach(p => p.Key = "ABC");
问题是你的getter为Key
。
让我们假设您想要返回由其他代码分配的Key
值,或者{Message}:{Priority}
的组合。
当前代码:
public string Key
{
get
{
return _key = $"{Message}:{Priority}";
}
}
访问Key
时,将$"{Message}:{Priority}"
的字符串赋值给_key
,然后返回。
因此,无论您将Key
设置为什么值,$"{Message}:{Priority}"
总是返回。
如果你把get改成这样:
public string Key
{
get
{
return _key ?? $"{Message}:{Priority}";
}
}
修改后,我们使用空合并操作符,如果操作数不为空(例如_key
),则返回左操作数;否则返回右操作数(如字符串$"{Message}:{Priority}"
)。
您将返回分配给Key
, 或字符串$"{Message}:{Priority}"
的值,如果_key
是null
(即您没有分配任何东西给它)