重新更新“键”;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"); 

重新更新“键”;value与"ForEach"没有反映

问题是你的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}"的值,如果_keynull(即您没有分配任何东西给它)