【发布时间】:2021-02-03 09:51:02
【问题描述】:
最近开始在 C# 中工作,我正在充分利用速记属性(Getters-Setters),并且有一个关于如何约束 setter 的问题
我有一个高度属性如下
public int height {get; set;} = 200
width 属性至少为 10px,因此以原始形式编写
private int width = 100
public int Width
{
get
{
return this.width;
}
set
{
this.width = value > 10 ? value : 10;
}
}
我的问题是...有什么方法可以保留速记样式的属性并对其进行操作以使用我的三元运算符?几乎所有其他属性都有简写语法,我喜欢保持一致。 (我知道这是错误的,但这样的事情可能吗?)
public int width {get; set => value > 10 ? value : 10;} = 100
【问题讨论】:
-
如果你的 setter 有一个 lambda 表达式,编译器也会让你使用一个作为 getter
-
我从未见过这怎么可能,但我很想知道是否有办法。我不得不承认,在某些情况下,让这种语法成为可能会非常方便。在编译时找出隐藏的自动生成的私有字段并不复杂。
-
感谢阅读威克。 @Jonesopolis 请问为什么?在我的脑海中,它们是 2 个独立的代码块,当我使用 Java 时,它们被完全隔离。
标签: c# getter-setter conditional-operator