1

我有两个枚举:

public enum test1 {
   t1=1,
   t2=0 
}
public enum test2 {
   tt1 = test1.t1,
   tt2= test1.t2 
}

如果我了解 tt1,我可以从中检索 t1。我想使用具有键知识的字典,可以获取与该键对应的值。

仍然使用以下语句获得正确的输出:

var kkk = (test1) test2.tt1 ;
4

2 回答 2

2

好吧,您显示的代码有点令人困惑,因为test1它是从零开始的,所以声明test2如下:

public enum test2 {
   tt1,
   tt2 
}

将是类似的。

尽管如此,如果我有一个test2值,比如说tt1,我实际上可以将其转换为一个test1值:

var t = (test1)test2.tt1;

因为它们具有相同的潜在int价值。因此,您可以假设有一个字典,Dictionary<test1, object>并使用变量从中获取值test2

var val = d[(test1)test2.tt1];
于 2013-09-11T16:20:32.170 回答
0

简短的回答是:不。

枚举的初始值必须在编译时知道。然后编译器将其转换为(在您的情况下)为 int。

所以 test1.t2 的值为 1,而 test2.tt2 的值相同。但从代码视图来看,这只是两个相同的值,根本不相关。

如果您想从 enum tt2 中准确了解取值,则必须使用例如。一些自定义属性并通过反射接收此信息。

或者只是自己填充字典(手动)

        Dictionary<test1, test2> dict = new Dictionary<test1, test2>() {
            { test1.t1, test2.tt1 }, 
            { test1.t2, test2.tt2 }, 
        };
于 2013-09-11T16:35:06.850 回答