构造函数中的枚举类型
Enum type in constructor
所以我必须从 class 启动一个对象到主窗体,但我必须放入构造函数的参数来自我在 class 中创建的枚举类型。
private List<Geluidsfragment> fragmenten;
private enum ThemaSoorten
{
Muziek,
Luisterboeken,
Cabaretshows
}
^这部分现在在 class 之外,正如所建议的那样。
// Constrcutors
public BGExperience(ThemaSoorten thema)
{
fragmenten = new List<Geluidsfragment>();
this.thema = thema;
}
这些是字段和字段的构造函数。下面是我需要的这个class对象的初始化
public GeluidsfragmentForm()
{
InitializeComponent();
BGExperience bgExperience = new BGExperience("Muziek");
}
所以重载必须是 ThemaSoorten 类型并且必须在枚举中,但此时它卡住了。
有人知道如何解决这个问题吗?
BGExperience bgExperience = new BGExperience(ThemaSoorten.thema1);
你应该先把你的 enum
设为 public 然后试试这个:
BGExperience bgExperience = new BGExperience(BGExperience.ThemaSoorten.Muziek);
如果您不将 enum
设为 public,您将无法在 class 之外访问它,更不用说创建 [=] 的实例了46=].
更新
正如 Sriram 在他的评论中正确指出的那样,不使此 enum
成为嵌套类型将是更好的设计方法。您可以在 class 之外声明它,例如:
public enum ThemaSoorten
{
Muziek,
Luisterboeken,
Cabaretshows
}
然后创建一个新的 BGExperience
对象,如下所示:
var bgExperience = new BGExperience(ThemaSoorten.Muziek);
重要说明(感谢 Selman22)
您不能用您已经完成的方式声明 enum
。这甚至无法编译。此外,您应该在输入时收到一条错误消息。无论如何,定义 enum
的正确方法如下:
public enum EnumName
{
Member1,
Member2,
Member3
}
代替 EnumName
你应该用你的 enum
代替 Member1
, Member2
和 Member3
枚举中的项目。如果你想让这个项目有特定的值,你应该这样做:
public enum EnumName
{
Member1 = 1,
Member2 = 2,
Member3 = 3
}
或者您可能想向构造函数提供枚举的字符串值,那么它将如何工作:
BGExperience bgExperience = new BGExperience((BGExperience.ThemaSoorten)Enum.Parse(typeof(BGExperience.ThemaSoorten), "Muziek"));
确保为此创建枚举 public。否则,您必须在构造函数中提供字符串并将其解析为构造函数中的枚举值。
所以我必须从 class 启动一个对象到主窗体,但我必须放入构造函数的参数来自我在 class 中创建的枚举类型。
private List<Geluidsfragment> fragmenten;
private enum ThemaSoorten
{
Muziek,
Luisterboeken,
Cabaretshows
}
^这部分现在在 class 之外,正如所建议的那样。
// Constrcutors
public BGExperience(ThemaSoorten thema)
{
fragmenten = new List<Geluidsfragment>();
this.thema = thema;
}
这些是字段和字段的构造函数。下面是我需要的这个class对象的初始化
public GeluidsfragmentForm()
{
InitializeComponent();
BGExperience bgExperience = new BGExperience("Muziek");
}
所以重载必须是 ThemaSoorten 类型并且必须在枚举中,但此时它卡住了。
有人知道如何解决这个问题吗?
BGExperience bgExperience = new BGExperience(ThemaSoorten.thema1);
你应该先把你的 enum
设为 public 然后试试这个:
BGExperience bgExperience = new BGExperience(BGExperience.ThemaSoorten.Muziek);
如果您不将 enum
设为 public,您将无法在 class 之外访问它,更不用说创建 [=] 的实例了46=].
更新
正如 Sriram 在他的评论中正确指出的那样,不使此 enum
成为嵌套类型将是更好的设计方法。您可以在 class 之外声明它,例如:
public enum ThemaSoorten
{
Muziek,
Luisterboeken,
Cabaretshows
}
然后创建一个新的 BGExperience
对象,如下所示:
var bgExperience = new BGExperience(ThemaSoorten.Muziek);
重要说明(感谢 Selman22)
您不能用您已经完成的方式声明 enum
。这甚至无法编译。此外,您应该在输入时收到一条错误消息。无论如何,定义 enum
的正确方法如下:
public enum EnumName
{
Member1,
Member2,
Member3
}
代替 EnumName
你应该用你的 enum
代替 Member1
, Member2
和 Member3
枚举中的项目。如果你想让这个项目有特定的值,你应该这样做:
public enum EnumName
{
Member1 = 1,
Member2 = 2,
Member3 = 3
}
或者您可能想向构造函数提供枚举的字符串值,那么它将如何工作:
BGExperience bgExperience = new BGExperience((BGExperience.ThemaSoorten)Enum.Parse(typeof(BGExperience.ThemaSoorten), "Muziek"));
确保为此创建枚举 public。否则,您必须在构造函数中提供字符串并将其解析为构造函数中的枚举值。