如何找到枚举给定名字的第二个别名
本文关键字:第二个 别名 何找 枚举 | 更新日期: 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 },
};