我正在尝试设置一个枚举来固定钣金规(厚度)。现在我有:
using System.ComponentModel;
public enum Gauge
{
[Description("24 Gauge")]
G24 = 239,
[Description("20 Gauge")]
G20 = 359,
[Description("18 Gauge")]
G18 = 478,
[Description("16 Gauge")]
G16 = 598,
[Description("14 Gauge")]
G14 = 747
}
我的问题是:这似乎是打破不使用枚举背后的非整数类型规则的好地方吗?
真实世界的值类似于.0239,.0359,.0478等。浮点类型可能非常不可靠,但我正在考虑使用Decimal类型。它不是一个96位整数,后面的小数位移了吗?这应该是一个可靠的价值还是我只是在为这个想法遇到麻烦?
答案 0 :(得分:2)
如果我理解你想要做什么,那么你可以使用隐式转换的类从/到双倍:
public class Gauge
{
[Description("24 Gauge")]
public const double G24 = 0.239;
[Description("20 Gauge")]
public const double G20 = 0.359;
[Description("18 Gauge")]
public const double G18 = 0.478;
[Description("16 Gauge")]
public const double G16 = 0.598;
[Description("14 Gauge")]
public const double G14 = 0.747;
private double Value { get; set; }
private Gauge(Double d)
{
Value = d;
}
public static implicit operator Double(Gauge g)
{
return g.Value;
}
public static implicit operator Gauge(Double d)
{
return new Gauge(d);
}
}
你可以像这样使用它:
Gauge g = Gauge.G14;
g = 0.43;
//and so on, you can pass it as parameter to methods, etc
答案 1 :(得分:1)
枚举不允许使用.0239
等值。
每个枚举类型都有一个基础类型,除了char之外,它可以是任何整数类型。
...
枚举的已批准类型是byte,sbyte,short,ushort,int,uint,long或ulong。