You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中对象非空时为属性赋值的更简洁写法是什么?

C#当前版本(截至C# 12)确实不支持_myVariable?.Value = 5这类空条件运算符左值赋值语法,核心原因是空条件运算符的求值结果为右值,语法规范上不允许作为赋值操作的左操作数。

如果你希望减少显式if的书写,有两种可选的封装方式,但存在额外开销,适合非高频调用场景:

  • 第一种是封装通用扩展方法:
public static void IfNotNull<T>(this T? instance, Action<T> setterAction) where T : class
{
    if (instance is not null) setterAction(instance);
}

调用方式:

_myVariable.IfNotNull(x => x.Value = 5);
  • 第二种是针对特定类型封装SetValue方法,直接适配现有空条件调用语法:
public void SetValue(int value)
{
    Value = value;
}

调用方式:

_myVariable?.SetValue(5);

原生语法下最推荐你当前使用的if写法,没有任何额外性能开销,可读性也最高,不需要额外做冗余封装。


内容的提问来源于stack exchange,提问作者SomeRandomGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:06:05