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

C# .NET Core:如何在初始化器中让属性条件性沿用默认值

问题解决方法

你的需求是在不修改TestClass的前提下,让对象初始化器中Prop2在条件不满足时沿用类定义的默认值"val2",以下是可行的方案:

方案一:先实例化再条件赋值(推荐)

先创建对象并设置Prop1,之后仅在条件满足时修改Prop2,这样条件不满足时Prop2会保留类的默认值:

var condition = false;
var test = new TestClass { Prop1 = "nonDefaultValue" };
if (condition)
{
    test.Prop2 = valIfTrue;
}

方案二:引用临时实例的默认值(不推荐,有额外开销)

通过创建一个临时的TestClass实例获取默认值,避免硬编码,但会额外生成一个对象实例:

var condition = false;
var test = new TestClass
{
    Prop1 = "nonDefaultValue",
    Prop2 = condition ? valIfTrue : new TestClass().Prop2
};

原代码无法实现的原因

对象初始化器的本质是在实例创建后直接给属性赋值,原代码中当condition为false时,你显式给Prop2赋值了default(string)(即null),这会覆盖类定义中Prop2的默认值"val2"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:43:10