C#:将枚举类型作为参数传递
代码将枚举转换为通用列表
public static List<T> ToList<T>(Type t) where T : struct
{
return Enum.GetValues(typeof(T)).Cast<T>().ToList();
}
我尝试使用以下成功编译的
。我尝试使用以下代码调用上述方法
enum Fruit
{
apple = 1,
orange = 2,
banana = 3
};
private List<Fruit> GetFruitList()
{
List<Fruit> allFruits = EnumHelper.ToList(Fruit);
return allFruits;
}
导致以下错误
Compiler Error Message: CS0118: 'default.Fruit' is a 'type' but is used like a 'variable'
所以我确定如何传递枚举类型作为参数。
I tried to convert enum to a generic List by using the following code
public static List<T> ToList<T>(Type t) where T : struct
{
return Enum.GetValues(typeof(T)).Cast<T>().ToList();
}
it complied successfully.
and I tried to call the above mentioned method by using the following code
enum Fruit
{
apple = 1,
orange = 2,
banana = 3
};
private List<Fruit> GetFruitList()
{
List<Fruit> allFruits = EnumHelper.ToList(Fruit);
return allFruits;
}
resulted in the following error
Compiler Error Message: CS0118: 'default.Fruit' is a 'type' but is used like a 'variable'
So I am sure how to pass Enum type as a argument.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
为什么不这样做:
why not just do this:
松开参数
Type t
该类型已作为泛型参数传递,因此您不需要该方法的常规参数。
Loose the argument
Type t
The type is already being passed as generic parameter, so you don't need a regular argument for the method.
使用
EnumHelper.ToList(typeof(Fruit));
。但是,您可能会丢失该参数,将其声明为EnumHelper.ToList()
并使用它EnumHelper.ToList()
。Use
EnumHelper.ToList<Fruit>(typeof(Fruit));
. However, you can lose the parameter, declare asEnumHelper.ToList<T>()
and use itEnumHelper.ToList<Fruit>()
.为了将
Type
传递给您的函数,您应该使用以下语法:In order to pass a
Type
to your function, you should use the following syntax: