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

C#中能否快速重写set块内默认变量"value"的名称?

C#中能否自定义属性set块的默认参数名value?

嘿,这个问题问得挺有意思的!直接给结论:C#并不支持像Swift那样直接重写set访问器里的默认参数名value。

为什么不行?

在C#的语法设计里,value是set访问器的隐式固定参数,编译器会自动识别这个关键字来接收传入的新属性值,没有提供语法让开发者自定义这个参数的名称——它就是语言层面规定好的,没法改。

替代方案:手动转存为自定义变量

虽然不能直接改名,但你可以在set块里第一行就把value赋值给一个你想要命名的变量,之后用这个自定义变量来写逻辑,效果差不多:

class Foo {
    string name = "guy";
    public string Name {
        get { return name; }
        set {
            // 将默认的value转存为自定义名称的变量
            var newName = value;
            if (newName != "foo") {
                name = newName;
            } else {
                Console.WriteLine("sorry I already took that one!");
            }
        }
    }
}

这样后续代码里就能用newName(或者你喜欢的任何名字)来代替value,满足你想要的命名习惯。

另外补充一句:哪怕是C# 9及以后引入的init访问器(用于不可变属性的初始化),同样也是用value作为默认参数名,同样没法自定义哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:38:29