C#如何约束属性值范围至-5到func返回值?定义setter需配套getter吗?
C# 属性取值范围约束与自定义Setter问题
1. 能否约束aValue的取值范围?
完全可以。你可以通过自定义属性的setter,结合Math.Clamp方法,把aValue的取值限制在-5到func()返回值之间。每次给aValue赋值时,都会自动调用func()获取当前的上限值,再将输入值钳位到指定区间内。
示例代码:
private int _aValue; public int aValue { get => _aValue; set => _aValue = Math.Clamp(value, -5, func()); } public int func() { return someNonConstantValue; }
2. 自定义Setter是否必须同时提供Getter?
是的,必须配套提供Getter。C#的属性语法规则要求:如果你自定义了Setter(或者Getter),就必须显式实现对应的另一个访问器。不能只单独定义Setter而省略Getter——编译器会直接报错。哪怕Getter只是简单返回私有字段,也得明确写出来。
内容的提问来源于stack exchange,提问作者no one special
相关产品推荐
相关产品推荐

