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
相关产品推荐
相关产品推荐

