C# 枚举作为函数参数?
你能传递一个标准的 C# 枚举作为参数吗?
例如:
enum e1
{
//...
}
enum e2
{
//...
}
public void test()
{
myFunc( e1 );
myFunc( e2 );
}
public void myFunc( Enum e )
{
// Iterate through all the values in e
}
通过这样做,我希望检索任何给定枚举中的所有名称。 迭代代码是什么样的?
Can you pass a standard c# enum as a parameter?
For example:
enum e1
{
//...
}
enum e2
{
//...
}
public void test()
{
myFunc( e1 );
myFunc( e2 );
}
public void myFunc( Enum e )
{
// Iterate through all the values in e
}
By doing this I hope to retrieve all the names within any given enum. What would the Iteration code look like?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这!
编辑:我的错,你确实说迭代。
注意:我知道我可以在 foreach 语句中执行 GetNames() 调用,但我更喜欢首先将这种类型的东西分配给方法调用,因为它便于调试。
This!
EDIT: My bad, you did say iterate.
Note: I know I could just do the GetNames() call in my foreach statement, but I prefer to assign that type of thing to a method call first, as it's handy for debugging.
使用 Enum.GetNames( typeof(e) ) 方法,这将返回包含名称的字符串数组。
您还可以使用 Enum.GetValues 来获取对应值。
编辑 -哎哟 - 如果您将参数作为 Enum 传递,则需要使用 e.GetType() 而不是 typeof(),如果您将参数作为实际 Enum 类型名称传递,则将使用 typeof()。
Use the Enum.GetNames( typeof(e) ) method, this will return an array of strings with the names.
You can also use Enum.GetValues to obtain the counterpart values.
Edit -Whoops - if you are passing the parameter as Enum, you will need to use e.GetType() instead of typeof() which you would use if you had passed the parameter in as the actual Enum type name.
你的意思是类似 Enum.GetNames 的东西?
You mean something like Enum.GetNames?
枚举.GetValues
Enum.GetNames
所以类似...
Enum.GetValues
Enum.GetNames
so something like...
如果您尝试将
enum
直接传递给myFunc
,则会遇到麻烦,如下例所示:You will have trouble if you try passing an
enum
directly tomyFunc
, as in the following example:像这样:
Like this:
正确的是:
correct is: