我正在编写一个程序,其中我需要一些值,总是一个0到255之间的值,我想把它们限制在255,可以这么说。我想知道我最好的选择是什么,表现明智:
哪种选择最适合我的情况? (也欢迎其他建议)
答案 0 :(得分:3)
对于这样的事情,我的第一个想法不是关于性能而是关于可用性。如果没有更好地理解您的代码,很难确定性能影响,最终分析器将成为变化的真正判断。相反,我会专注于使其易于使用,然后测试该解决方案的性能。
这里有一个自定义类型似乎并不合理。据推测,您希望将每个单独的操作限制在255,而不是限制最终结果。例如255 + 100 - 50应该等于205而不是255.如果是这样,自定义类型是您最好的选择并且可以沿着这些线实现
struct MyInt {
public readonly int Value;
public MyInt(int value) {
Value = Math.Min(value, 255);
}
public static MyInt operator+(MyInt left, MyInt right) {
return new MyInt(left.Value + right.Value);
}
public static MyInt operator-(MyInt left, MyInt right) {
return new MyInt(left.Value - right.Value);
}
// etc ...
}
关于这种类型的注意事项,您还应考虑实施IComparable
,IComparable<T>
和IEquatable<T>
等接口