作为后续这个问题。 https://stackoverflow.com/questions/492115/c-enums-as-function-parameters
如何调用函数并传入枚举?
例如我有以下代码:
enum e1
{
//...
}
public void test()
{
myFunc( e1 );
}
public void myFunc( Enum e )
{
var names = Enum.GetNames(e.GetType());
foreach (var name in names)
{
// do something!
}
}
尽管当我这样做时,我收到“e1”是“类型”,但像“变量”一样使用的错误消息。有什么想法可以帮忙吗?
我试图保持该函数通用以适用于任何枚举而不仅仅是特定类型?这可能吗?...使用通用函数怎么样?这行得通吗?
您可以使用通用函数:
public void myFunc<T>()
{
var names = Enum.GetNames(typeof(T));
foreach (var name in names)
{
// do something!
}
}
并调用如下:
myFunc<e1>();
(EDIT)
如果您尝试约束,编译器会抱怨T
to Enum
or enum
.
因此,为了确保类型安全,您可以将函数更改为:
public static void myFunc<T>()
{
Type t = typeof(T);
if (!t.IsEnum)
throw new InvalidOperationException("Type is not Enum");
var names = Enum.GetNames(t);
foreach (var name in names)
{
// do something!
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)