它说这里是可能的类型的enum是byte,sbyte,short,ushort,int,uint,long,或ulong.
如果我需要a float或a double来定义百分比增量,例如,1.5或者2.5例如,该怎么办?我被困了?
如上所述:http: //en.csharp-online.net/.NET_Type_Design_Guidelines%E2%80%94Enum_Design
枚举是具有一组静态常量的结构.遵循此指南的原因是,如果定义枚举而不是手动定义具有静态常量的结构,则将获得一些额外的编译器和反射支持.
由于枚举是一组常量,为什么我不能有浮点常量?
更新:在这里说:http: //en.csharp-online.net/.NET_Type_Design_Guidelines%E2%80%94Enum_Design "您是否知道CLR支持具有基础类型float或double的枚举,即使大多数语言都没有'选择揭露它?"
因为我只使用c#,有一些方法可以解决一些问题吗?
是的,你被困在那里.您不能将enums用于浮点类型.但是,您可以使用static classwith常量:
public static class MyFloatEnum {
public const float One = 1.0;
public const float OneAndAHalf = 1.5;
// etc.
}
Run Code Online (Sandbox Code Playgroud)
它在IntelliSense中看起来会有些接近.或者,您可能只想使用常量:
public const float A = 0.5;
public const float B = 17.62;
Run Code Online (Sandbox Code Playgroud)
尽管CLR本身支持浮点枚举,但C#设计人员选择不以该语言公开它(请参阅http://en.csharp-online.net/.NET_Type_Design_Guidelines%E2%80%94Enum_Design)。您可以像约翰·桑德斯(John Saunders)的回答中那样使用常量,也可以定义一个带有多个值的整数枚举,然后在需要时将它们除以。
不过,用例肯定很有趣。你为什么需要/想要这个?
| 归档时间: |
|
| 查看次数: |
12012 次 |
| 最近记录: |