我有两个枚举:
public enum test1 {
t1=1,
t2=0
}
public enum test2 {
tt1 = test1.t1,
tt2= test1.t2
}
如果我了解 tt1,我可以从中检索 t1。我想使用具有键知识的字典,可以获取与该键对应的值。
仍然使用以下语句获得正确的输出:
var kkk = (test1) test2.tt1 ;
好吧,您显示的代码有点令人困惑,因为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];
简短的回答是:不。
枚举的初始值必须在编译时知道。然后编译器将其转换为(在您的情况下)为 int。
所以 test1.t2 的值为 1,而 test2.tt2 的值相同。但从代码视图来看,这只是两个相同的值,根本不相关。
如果您想从 enum tt2 中准确了解取值,则必须使用例如。一些自定义属性并通过反射接收此信息。
或者只是自己填充字典(手动)
Dictionary<test1, test2> dict = new Dictionary<test1, test2>() {
{ test1.t1, test2.tt1 },
{ test1.t2, test2.tt2 },
};