赋枚举值的问题

本文关键字:问题 枚举 | 更新日期: 2023-09-27 18:11:01

我有一个enum -

public enum EnumA
{
   All, A, B, C, D, E, F
}

我将这个枚举用于另一个类

public class ClassB
{
     public string[] createdOn { get; set; }
     public EnumA[] EnumA { get; set; }
}

我在其他方法中使用这个类b -

public void MethodC(ClassB classB, int userId)
{
         // Now I need to check if classB.EnumA’s Count() is zero or not. If zero then I need to assign classB.ClassA[] with A, B, C, D, E, F
        // For that I have tried this –
    int index = 0;
    foreach(ClassA enumA in (ClassA[])Enum.GetValues(typeof(EnumA)))
    {
        classB. EnumA[index++] = enumA;
    }
}

抛出‘Index out of the bounds error’

我哪里出错了,有什么帮助吗?

EDIT - I: ClassA改为EnumA

赋枚举值的问题

问题是你必须在你的方法中实例化ClassBEnumA属性:

EnumA[] values = (EnumA[])Enum.GetValues(typeof(EnumA));
classB.EnumA = new EnumA[values.Length];
int index = 0;
foreach (EnumA enumA in values)
{
    classB.EnumA[index++] = enumA;
}

但实际上,你的问题有一个更简单的解决方案,正如Trevor建议的那样:直接分配它:

classB.EnumA = (EnumA[])Enum.GetValues(typeof(EnumA));

数组是不可变的结构。如果数组的大小已经分配,则不能更改数组的大小。相反,你必须用新的大小创建一个新的数组。

看下面的代码:

public void MethodC(ClassB classB, int userId)
{
    int index = 0;
    classB.ClassA = new ClassA[(ClassA[])Enum.GetValues(typeof(ClassA)).Length];
    foreach(ClassA classA in (ClassA[])Enum.GetValues(typeof(ClassA)))
    {
        classB. ClassA [index++] = classA;
    }
}