枚举应该是类型安全的。我认为他们并没有让它们含蓄地拒绝其他用途。虽然框架允许你为它们分配一个不变的值,但你应该重新考虑你的意图。如果您主要使用枚举来存储常量值,请考虑使用静态类:
public static class ReturnValue
{
public const int Success = 0;
public const int FailReason1 = 1;
public const int FailReason2 = 2;
//Etc...
}
可让您执行此操作。
public static int main(string[] args){
return ReturnValue.Success;
}
编辑
当你做要提供值枚举是当你想将它们结合起来。见下面的例子:
[Flags] // indicates bitwise operations occur on this enum
public enum DaysOfWeek : byte // byte type to limit size
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
Weekend = Sunday | Saturday,
Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday
}
这个枚举然后可以通过使用按位数学被消耗。有关某些应用程序,请参阅以下示例
public static class DaysOfWeekEvaluator
{
public static bool IsWeekends(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekend) == DaysOfWeek.Weekend;
}
public static bool IsAllWeekdays(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekdays) == DaysOfWeek.Weekdays;
}
public static bool HasWeekdays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekdays)) > 0;
}
public static bool HasWeekendDays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekend)) > 0;
}
}
工程就像一个魅力,谢谢!奇怪的是你可以定义一个枚举:“public enum MyEnum:int {...}”,并且它的值不能隐式转换。那里没有“泛型枚举”的概念吗? - public enum MyEnum - 或者这是完全荒谬的? –
Pwninstein
2009-02-23 16:02:23
你可以delcare键入你的enum“public enum ReturnValue:int”,它强制值的类型为int。它仍然不提供隐式转换。编辑以显示何时它是一个在枚举中使用值的好主意。 – 2009-02-23 19:44:05