枚举类型在构造函数中

时间:2015-01-05 14:53:37

标签: c# constructor enums

所以我必须从类中启动一个对象到主窗体中,但是我必须在构造函数中放入的参数来自我在该类中创建的枚举类型。

    private List<Geluidsfragment> fragmenten;
    private enum ThemaSoorten 
    { 
        Muziek, 
        Luisterboeken, 
        Cabaretshows 
    }    

^正如所建议的那样,这部分现在已经在课堂之外了。

// Constrcutors

    public BGExperience(ThemaSoorten thema)
    {
        fragmenten = new List<Geluidsfragment>();
        this.thema = thema;
    }    

这些是字段的字段和构造函数。下面是我需要的这个课程的启动。

public GeluidsfragmentForm()
    {
        InitializeComponent();
        BGExperience bgExperience = new BGExperience("Muziek");
    }

所以重载必须是ThemaSoorten类型,它必须在枚举中,但此时它会卡住。

任何人都知道如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

首先应该让你的enum公开,然后尝试这个:

BGExperience bgExperience = new BGExperience(BGExperience.ThemaSoorten.Muziek);

如果您没有让enum公开,那么您将无法在课堂外访问它,更不用说创建课程实例了。

<强>更新

正如Sriram在他的评论中已经指出的那样,将enum作为嵌套类型是一种更好的设计方法。你可以在课堂外声明它,例如:

public enum ThemaSoorten 
{ 
    Muziek, 
    Luisterboeken, 
    Cabaretshows 
}

然后创建一个新的BGExperience对象,如下所示:

var bgExperience = new BGExperience(ThemaSoorten.Muziek);

重要提示(感谢Selman22)

您无法以您已经完成的方式声明enum。这甚至无法编译。此外,您在输入时应该收到错误消息。无论如何,确定enum的正确方法如下:

public enum EnumName
{
    Member1,
    Member2,
    Member3
}

代替EnumName,您应该将enum的名称替换为Member1Member2Member3的名称。你的枚举。如果您希望此项目具有特定值,则应执行以下操作:

public enum EnumName
{
    Member1 = 1,
    Member2 = 2,
    Member3 = 3
}

答案 1 :(得分:0)

或许您想要为构造函数提供枚举的字符串值,然后这是它将如何工作:

BGExperience bgExperience = new BGExperience((BGExperience.ThemaSoorten)Enum.Parse(typeof(BGExperience.ThemaSoorten), "Muziek"));

确保将枚举公之于众。否则,您必须在构造函数中提供字符串并将其解析为构造函数中的枚举值。

答案 2 :(得分:-1)

BGExperience bgExperience = new BGExperience(ThemaSoorten.thema1);