【发布时间】:2012-07-27 20:27:55
【问题描述】:
我正在尝试为一个范围变量(最小值、最大值)创建一个结构,其中包含几个成员和一个知道值之间是否存在的方法。
现在我的结构是这样的:
public struct NumRange
{
float maximum;
float minimum;
public NumRange(float min, float max)
{
this.maximum = max;
this.minimum = min;
}
public bool IsBetween(float value)
{
if (value < maximum && value > minimum)
return true;
return false;
}
}
我希望能够通过
制作数字范围NumRange test = new NumRange(15, 20);
制作这个范围变量类型的重点是制作一个地图键字典,如下所示:
public Dictionary<NumRange, Color> mapKey = new Dictionary<NumRange, Color>();
NumRange test = new NumRange(15, 20);
mapKey.Add(test, Color.Orange);
这是最好的方法吗?当我尝试向 mapKey 添加一些东西时,它也不喜欢。表示有',' ')' '('等无效标记
【问题讨论】:
-
你的结构看起来不错,但请记住,浮动可能会以令人惊讶的方式进行比较。使用泛型而不是重用整数的浮点范围可以获得更好的性能:
NumRange<T> { T min; T max;...。 -
遵循标准 C# 大小写和命名准则:msdn.microsoft.com/en-us/library/ms229043.aspx
-
@JonofAllTrades 如何使用通用 T?我要替换所有的 float 实例还是???
-
@Jesse 我更改了一些,但如果您发现任何其他错误,请告诉我,这样我就不会继续了。
-
另一种可能性是使结构不可变,即将
readonly放在您的成员minimum和maximum上。这 a) 表示意图:此范围始终适用于这些值,并且 b) 可能允许编译器和/或 JITter 优化事物。
标签: c# dictionary struct variable-types