直观的, 简单的枚举, 没想到有这么多让人吃惊的细节:
enum T
{
A,
B=A,
};
public class MyClass
{
public static void RunSnippet()
{
WL( T.A.ToString() );
WL( T.B.ToString() );
T tt = T.B;
WL( tt.ToString() );
foreach(FieldInfo fi in typeof(T).GetFields(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public ) )
{
WL("Field declare name: {0}, instance name: {1}", fi.Name, fi.GetValue(null).ToString() );
}
}
}
|
先猜猜答案, 结果是很让人吃惊的,
T.B.ToString() 结果竟然是A, 而在.NET中, 通过反射却是可以得到确实有两个枚举值的定义, 只不过这两个枚举值相同.
问题: 既然A与B取值相同, 以上面的定义, 有没有可能A.ToString()和B.ToString()的结果都是 B?
我想没可能.
无用的细节吗? 它已经在我们的产品中引起了难以查找的Bug!
|
文件: | Default.rar |
大小: | 0KB |
下载: | 下载 |
|
阅读(1011) | 评论(0) | 转发(0) |