如何将枚举值添加到列表中
我有以下枚举:
public enum SymbolWejsciowy
{
K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8
}
我想使用此枚举的值创建一个列表:
public List<SymbolWejsciowy> symbol;
我尝试了几种不同的方法将枚举值添加到列表中:
SymbolWejsciowy symbol;
symbol.Add(symbol = SymbolWejsciowy.K1);
但是
symbol.Add(SymbolWejsciowy.K1);
,我总是遇到以下异常:
未将对象引用设置为对象的实例。
我怎样才能正确地完成这个任务?
I have the following enum:
public enum SymbolWejsciowy
{
K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8
}
I want to create a list using the values of this enum:
public List<SymbolWejsciowy> symbol;
I have tried a couple different ways to add the enum values to the list:
SymbolWejsciowy symbol;
symbol.Add(symbol = SymbolWejsciowy.K1);
and
symbol.Add(SymbolWejsciowy.K1);
However, I always get the following exception:
Object reference not set to an instance of an object.
How can I correctly accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
正如其他答案已经指出的那样,问题是您已经声明了一个列表,但尚未构造一个列表,因此当您尝试添加元素时,您会收到
NullReferenceException
。请注意,如果要构造新列表,可以使用更简洁的 集合初始值设定项语法:
如果您想要包含所有值的列表,则可以通过调用
Enum.GetValues
:As other answers have already pointed out, the problem is that you have declared a list, but you haven't constructed one so you get a
NullReferenceException
when you try to add elements.Note that if you want to construct a new list you can use the more concise collection initializer syntax:
If you want a list containing all the values then you can get that by calling
Enum.GetValues
:在您的选项 1 SymbolWejsciowy 实例和您的列表中具有相同的名称,我想这是一个拼写错误。
如果不考虑到这一点,我会说你没有创建列表的实例
In your option 1 SymbolWejsciowy instance and your list have the same name, I imagine that's a typo error.
Without taking that into account I'd say you didn't created the instance of the list
您的代码永远不会初始化该列表。试试这个:
和
Your code never initializes the list. Try this:
and
如果
Enum.GetValues()
早在 C# 2.0 中就已经针对泛型进行了更新,那肯定会很好。好吧,猜猜我们必须自己编写它:我包含了
Parse()
因为它以同样的方式受益于泛型。用法:(
旁白:我也希望你可以为这类事情编写
where T : enum
。另外,where T : delegate
。)It sure would be nice if
Enum.GetValues()
had been updated for generics way back in C# 2.0. Well, guess we have to write it ourselves:I included
Parse()
because it benefits from generics in the same way.Usage:
(ASIDE: I also wish you could write
where T : enum
for just this sort of thing. Also,where T : delegate
.)这些答案都不适合我。
我认为大多数人只是想要一个
List
或将许多枚举组合在一起后的值列表。这应该有帮助:None of these answers worked for me.
I think most people just want a
List<string>
or list of values after combining many enums together. This should help: