如何找到枚举给定名字的第二个别名

本文关键字:第二个 别名 何找 枚举 | 更新日期: 2023-09-27 18:31:07

我有两个枚举:

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 将具有相同的值。但从代码视图来看,这只是两个相同的值,完全不相关。

如果你想确切地知道枚举 tt2 取值,你将不得不使用例如一些自定义属性并通过反射接收此信息。

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

        Dictionary<test1, test2> dict = new Dictionary<test1, test2>() {
            { test1.t1, test2.tt1 }, 
            { test1.t2, test2.tt2 }, 
        };