C#:将枚举类型作为参数传递

发布于 2024-10-20 02:22:46 字数 642 浏览 4 评论 0原文

代码将枚举转换为通用列表

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

茶花眉 2024-10-27 02:22:46
public static List<T> ToList<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;
}
public static List<T> ToList<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;
}
花伊自在美 2024-10-27 02:22:46

为什么不这样做:

public static List<T> ToList<T>()
{     
    return Enum.GetValues(typeof(T)).Cast<T>().ToList(); 
} 

why not just do this:

public static List<T> ToList<T>()
{     
    return Enum.GetValues(typeof(T)).Cast<T>().ToList(); 
} 
吾性傲以野 2024-10-27 02:22:46
List<Fruit> allFruits = EnumHelper.ToList<Fruit>(typeof(Fruit));
List<Fruit> allFruits = EnumHelper.ToList<Fruit>(typeof(Fruit));
隐诗 2024-10-27 02:22:46

松开参数 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.

多情癖 2024-10-27 02:22:46

使用EnumHelper.ToList(typeof(Fruit));。但是,您可能会丢失该参数,将其声明为 EnumHelper.ToList() 并使用它 EnumHelper.ToList()

Use EnumHelper.ToList<Fruit>(typeof(Fruit));. However, you can lose the parameter, declare as EnumHelper.ToList<T>() and use it EnumHelper.ToList<Fruit>().

杀手六號 2024-10-27 02:22:46

为了将 Type 传递给您的函数,您应该使用以下语法:

 EnumHelper.ToList(typeof(Fruit));

In order to pass a Type to your function, you should use the following syntax:

 EnumHelper.ToList(typeof(Fruit));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文