赋枚举值的问题
本文关键字:问题 枚举 | 更新日期: 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
问题是你必须在你的方法中实例化ClassB
的EnumA
属性:
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;
}
}