2015-01-21 170 views
-3
class enum_class 
{ 
    public static void Main() 
    {  
    Gender Unknown = (int)Season.Winter; 
    Console.WriteLine(Unknown); 
    Console.WriteLine(Gender.Unknown); 
    } 
} 

public enum Gender 
{ 
    Unknown = 10; 
} 

public enum Season 
{ 
    Winter = 1; 
} 

在上面的代码中,我希望将变量Winter的值赋给变量Unknown。 现在Console.WriteLine(Unknown);给出预期的输出,即未知值从初始值10变更为1。将一个类型的枚举赋值为另一个类型的枚举?

然而,Console.WriteLine(Gender.Unknown);印刷品10作为它的输出这是其原始值。我可以知道背后的原因吗?!

+0

你已经创建了一个类型为'Gender'的变量,名为Unknown,你根本没有改变enum的值 – Sayse 2015-01-21 08:37:21

+1

这个问题可能有帮助(不重复) - [为什么要将int转换为无效的枚举值NOT抛出异常?](http://stackoverflow.com/questions/6413804/why-does-casting-int-to-invalid-enum-value-not-throw-exception) – Sayse 2015-01-21 08:38:45

+1

你似乎在这里有一些基本的混淆关于什么[变量](https://msdn.microsoft.com/en-us/library/wew5ytx4(v = vs.90).aspx)与[枚举](https://msdn.microsoft.com/zh-cn/ us/library/4s1w24dx(v = vs.90).aspx)。 – 2015-01-21 08:38:47

回答

0

如果我们跟踪你的代码中,我们看到,在Main方法,首先创建Gender类型的变量(这是一个枚举)命名unknown这也等于整数Season.Winter值,即1。因此, Console.WriteLine(Unknown)将导致1.在第三行中,您调用值Gender.Unknown;您定义的枚举值,它总是10.

总结;代码中的第一个Unknown是您创建的变量,但第二个是Gender.Unknown,它是一个常量枚举。