C#是否有内置的限制值(Clamped Values)类?
C#是否有内置的带自动钳位的CurrentValue/MaxValue类?
嘿,刚好我对C#标准库这块比较熟悉,直接给你结论:.NET标准库中并没有直接提供完全符合你需求的内置类——也就是那种自带CurrentValue和MaxValue属性,且设置CurrentValue时自动将其钳位到MaxValue(不抛出异常)的现成类型。
不过你自己动手实现这个类的做法完全没问题,甚至是很常见的解决方案。这里可以给你一个简洁的示例参考(和你自己写的逻辑应该差不多):
public class ClampedIntValue { public int MaxValue { get; set; } = int.MaxValue; // 默认值可按需调整 public int MinValue { get; set; } = int.MinValue; // 如果需要下限也可以加上 private int _currentValue; public int CurrentValue { get => _currentValue; set { // 同时处理上下限钳位,若只需要上限可去掉Min部分 _currentValue = Math.Max(MinValue, Math.Min(value, MaxValue)); } } }
如果需要支持更多数值类型(比如float、double),还可以把它改成泛型类,借助IComparable<T>来实现通用的钳位逻辑。
另外提一句,.NET里有一些和数值范围相关的辅助类(比如RangeAttribute用于数据验证),但它们都不具备自动修改值并钳位的能力,只是做校验提示。所以你自己实现的类是目前最直接的解决方案。
内容的提问来源于stack exchange,提问作者R1PFake
相关产品推荐
相关产品推荐

