枚举和数组索引?

时间:2009-04-16 23:40:10

标签: c# .net arrays enums

我正在处理这个家庭作业项目并且无法理解文本,解释如何正确获取枚举的访问值,然后将字符串数组值应用于它。你能帮我理解一下吗?我们正在使用的文本非常难以编写,以便初学者理解,所以我在这里有点自己。我已经编写了第一部分,但需要一些关于访问枚举值和分配的帮助,我想我很接近,但是不明白如何正确获取和设置值。

  

写一个课程,MyCourses,其中包含您正在学习的所有课程的枚举。这个枚举应该嵌套在你的MyCourses类中。您的类还应该有一个数组字段,提供每个课程的简短描述(作为字符串)。编写一个索引器,将您的一个枚举课程作为索引,并返回课程的String描述。

namespace Unit_4_Project
{
    public class MyCourses
    {

        // enumeration that contains an enumeration of all the courses that 
        // student is currently enrolled in
        public enum CourseName
        {
            IT274_01AU,
            CS210_06AU
        }

        // array field that provides short description for each of classes, 
        // returns string description of the course
        private String[] courseDescription = 
         {"Intermediate C#: Teaches intermediate elements of C# programming and software design",
          "Career Development Strategies: Teaches principles for career progression, resume preparation, and overall self anaylsis"};

        // indexer that takes one of the enumerated courses as an index 
        // and returns the String description of the course
        public String this[CourseName index]
        {
            get
            {
                if (index == 1)
                    return courseDescription[0];
                else
                    return courseDescription[1];
            }
            set
            {
                if (index == 1)
                    courseDescription[0] = value;
                else
                    courseDescription[1] = value;
            }
        }

    }


}//end public class MyCourses

5 个答案:

答案 0 :(得分:1)

你很亲密,最后你只是有点疯狂。 CourseName只是一个数字。您可以直接索引到courseDescription数组......

courseDescription[(int)index]

你有它。 :)

答案 1 :(得分:1)

枚举不会隐式转换为整数。但你可以明确地转换它们。

public String this[CourseName index]
{
  get { return courseDescription[(int)index]; }
  set { courseDescription[(int)index] = value; }

如果您打算以这种方式使用枚举,则应定义它们所代表的实际数值。

public enum CourseName
{
  IT274_01AU = 0,
  CS210_06AU = 1
}

虽然目前的枚举实施方式有效,但没有任何内容表明它将来会这样做。

答案 2 :(得分:0)

您缺少的是枚举转换为整数。 (事实上​​,在它们的涵盖范围内,它们基本上都是整体的。)

数组可以通过整数编入索引。

尝试使用枚举类型的参数索引数组。

答案 3 :(得分:0)

以下是我对CodeGuru的回复:

枚举是强类型的,因此您无法直接将其与int进行比较。但是,您可以将枚举转换为int。所以你会改为:

if ( ( ( int ) index ) == 1)
     return courseDescription[0];
else
     return courseDescription[1];

答案 4 :(得分:0)

这里的诀窍是Enumerations是其核心的整数数据类型。这意味着如果您愿意,可以在Enum和Int32之间来回转换:

您需要将“获取”部分更改为:

public String this[CourseName index]
{
    get {
        return courseDescription[(int)index];
    }        
}

这是有效的,因为枚举基本上等同于:

public enum CourseName
{
    IT274_01AU = 0,
    CS210_06AU = 1
}