在C#中指定枚举的类型失败

时间:2014-05-06 07:42:56

标签: c# enums

我的类中有一个类型为uint的枚举,另一个带有uint参数的函数。但是当我用枚举作为参数调用该函数(setColor)时,我得到错误:

Error   3   Argument 1: cannot convert from 'Test.Form1.colors' to 'uint'   

这是我的班级:

namespace Test{
    public partial class Form1 : Form
    {
        enum color : uint {off, red, yellow};


        setColor(uint color){
         ...
        }

        MyFunction()
        {
         setColor(color.red);
        }
    }
}

4 个答案:

答案 0 :(得分:2)

您应该阅读documentation

  

基础类型指定为每个枚举器分配多少存储空间。但是,从枚举类型转换为整数类型需要显式强制转换。例如,以下语句通过使用强制转换从枚举转换为枚举器将枚举器Sun赋予int类型的变量。中间体

     

int x = (int)Days.Sun;

答案 1 :(得分:1)

转换为uint并使用{}定义枚举。

public partial class Form1 : Form
{
    enum color : uint {off, red, yellow};

    void setColor(uint color){

    }

    void MyFunction()
    {
        setColor((uint)color.red);
    }
}

答案 2 :(得分:1)

enum mycolor : uint
{
    off, 
    red, 
    yellow
}

void setColor(mycolor color ){ }

void MyFunction()
{
    setColor(mycolor.red);
}

答案 3 :(得分:0)

这应该适合你。

public partial class Form1: Form
{
    enum color : uint {off, red, yellow};


    void setColor(uint color){

    }

    void MyFunction()
    {
        setColor((uint)(color.red));
    }
}