这不是枚举的行为(或应该表现)。你基本上创建了两个不同的枚举实例。这就是为什么C#中存在类。考虑创建一个类:
public class SomeEnum
{
public int Name;
public int Surname;
private SomeEnum(int name, int surname)
{
Name = name;
Surname = surname;
}
public static SomeEnum EnumA => new SomeEnum(1, 2);
public static SomeEnum EnumB => new SomeEnum(50, 60);
}
并改变你的方法是:
public void myMethod(User u, SomeEnum e)
{
// Enum e can be either EnumA or EnumB
// Do something with the Enum passed
}
我改变最少的代码,尽可能我不知道目的是这些“枚举”什么的,但通过这种方式,您可以根据需要创建任意多个实例,而不会让您的代码混淆所有这些相同的Enum规范。
要使用EnumA的这种方法,例如您可以拨打myMethod(user, SomeEnum.EnumA)
。
这种方式只能使用指定的枚举(EnumA
和EnumB
)。另外,如果你想创建即时枚举,代码可以改为:
public class SomeEnum
{
public int Name;
public int Surname;
public SomeEnum(int name, int surname)
{
Name = name;
Surname = surname;
}
}
这样你就可以调用该方法myMethod(user, new SomeEnum(1, 2))
。
你能举出更多关于你想看到什么输出以及你如何调用'myMethod'的例子吗?我还不清楚你正在努力完成什么。 –
@BradleyUffner根据哪个枚举通过我想要获得所有的枚举值 – erbsoftware
所有的枚举都有'name'和'surname'成员吗? –