C# 重新更新「;“关键”;价值不以“反映”;ForEach“;

C# 重新更新「;“关键”;价值不以“反映”;ForEach“;,c#,C#,我有一个下面的类,我正在设置“关键”值 现在,当我添加一些“消息”和“优先级”时,“Key”值会自动出现 问题在于键的getter 假设您希望返回由其他代码分配的键值,或者返回{Message}:{Priority}的组合,否则返回 您当前的代码: public string Key { get { return _key = $"{Message}:{Priority}"; } } 当您访问键时,将$“{Message}:{Priority}”字符串分

我有一个下面的类,我正在设置“关键”值

现在,当我添加一些“消息”和“优先级”时,“Key”值会自动出现


问题在于
键的getter

假设您希望返回由其他代码分配的
值,或者返回
{Message}:{Priority}
的组合,否则返回

您当前的代码:

public string Key
{
    get
    {
        return _key = $"{Message}:{Priority}";
    }
}
当您访问
时,将
$“{Message}:{Priority}”
字符串分配给
\u键
,然后返回

因此,无论您将
Key
设置为什么值,始终会返回
$“{Message}:{Priority}”

如果您更改了设置,则可以改为执行此操作:

public string Key
{
    get
    {
        return _key ?? $"{Message}:{Priority}";
    }
}
通过此更改,我们使用空合并运算符,如果操作数不为空(例如,
\u key
),它将返回左侧操作数;否则,它将返回右侧操作数(例如字符串
$“{Message}:{Priority}”


如果
\u Key
null
(即您没有为其分配任何内容)

问题在于
Key
的getter

假设您希望返回由其他代码分配的
值,或者返回
{Message}:{Priority}
的组合,否则返回

您当前的代码:

public string Key
{
    get
    {
        return _key = $"{Message}:{Priority}";
    }
}
当您访问
时,将
$“{Message}:{Priority}”
字符串分配给
\u键
,然后返回

因此,无论您将
Key
设置为什么值,始终会返回
$“{Message}:{Priority}”

如果您更改了设置,则可以改为执行此操作:

public string Key
{
    get
    {
        return _key ?? $"{Message}:{Priority}";
    }
}
通过此更改,我们使用空合并运算符,如果操作数不为空(例如,
\u key
),它将返回左侧操作数;否则,它将返回右侧操作数(例如字符串
$“{Message}:{Priority}”


如果
\u Key
null
(即您没有为其分配任何内容)

如果将
Key
更改为
返回键,则返回分配给
键的值,
字符串
$“{Message}:{Priority}”
$“{Message???“NA”}:{Priority???“NA”}”,情况如何?您的getter正在将构造的字符串分配给
\u key
,然后返回它。@Brendan Green,令人惊讶的是,它能按预期工作,但这是什么呢??这里是什么意思?这是空比较运算符,如果_键为空,它将选择其他值null@user2994834查看我的答案。但我的密钥不是空的,如果您将
Key
更改为simply
return\u Key$“{Message???“NA”}:{Priority???“NA”}”,情况如何?您的getter正在将构造的字符串分配给
\u key
,然后返回它。@Brendan Green,令人惊讶的是,它能按预期工作,但这是什么呢??这里是什么意思?这是空比较运算符,如果_键为空,它将选择其他值null@user2994834查看我的答案。但我的密钥不是空的,它在使用“ABC”更新时有一些值。你可以猜,OP需要什么,我完全不确定:)+1你可以猜,OP需要什么,我完全不确定:)+1
public string Key
{
    get
    {
        return _key ?? $"{Message}:{Priority}";
    }
}