【问题标题】:Enumeration and Array Indexes?枚举和数组索引?
【发布时间】:2009-04-16 23:40:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net arrays enums


    【解决方案1】:

    你已经接近了,你只是在最后有点发疯了。 CourseName 只是一个数字。您可以直接索引到您的 courseDescription 数组...

    courseDescription[(int)index]
    

    你有它。 :)

    【讨论】:

      【解决方案2】:

      枚举不会隐式转换为整数。但您可以显式转换它们。

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

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

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

      虽然当前的枚举实现会起作用,但没有任何迹象表明它会在未来这样做。

      【讨论】:

        【解决方案3】:

        您缺少的是枚举转换为整数。 (实际上,在它们的覆盖下,它们基本上都是整数。)

        数组可以用整数索引。

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

        【讨论】:

          【解决方案4】:

          这是我对 CodeGuru 的回复:

          枚举是强类型的,因此不能直接将它与 int 进行比较。但是,您可以将枚举转换为 int。所以你会得到这个:

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

          【讨论】:

            【解决方案5】:

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

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

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

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

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

            【讨论】:

              猜你喜欢
              • 2016-06-26
              • 2011-12-31
              • 1970-01-01
              • 2010-09-29
              • 1970-01-01
              • 1970-01-01
              • 2010-10-01
              • 2014-10-26
              • 2022-12-21
              相关资源
              最近更新 更多