gpt4 book ai didi

c# - 如何使用索引器访问枚举项并将数组字符串分配给它以供显示?

转载 作者:行者123 更新时间:2023-11-30 22:50:17 25 4
gpt4 key购买 nike

编辑:2009 年 3 月 23 日更新。请参阅底部的其余帖子。我仍然无法使用索引器。任何帮助或例子都会真正帮助我。

  1. Write a class, MyCourses, that contains an enumeration of all the courses that you are currently taking. This enum should be nested inside of your class MyCourses. Your class should also have an array field that provides a short description (as a String) of each of your courses. Write an indexer that takes one of your enumerated courses as an index and returns the String description of the course.

  2. Write a class MyFriends that contains an indexer that provides access to the names of your friends.

namespace IT274_Unit4Project
{

public class MyCourses
{

// enumeration that contains an enumeration of all the courses that
// student is currently enrolled in
public enum CourseName {IT274= 0,CS210 = 1}

// 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

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

请不要向我提供直接的代码答案,除非是通用的而非特定于我的项目的 MSDN 样式解释。即:

 public class MyClass
{ string field1;
string field2;

//properties
public string Value1
get etc...

谢谢!

最佳答案

首先,枚举的基类型必须是数值类型,所以不能有基类型为字符串的枚举。以下不会编译:

public enum CourseName
{
Class1 = "IT274-01AU: Intermediate C#",
Class2 = "CS210-06AU: Career Development Strategies"
}

因此将其更改为使用默认的 int 基类型。像下面这样的东西就可以了,但是可以根据需要更改名称(例如,您可能想使用类(class)名称而不是代码)。还请记住,您应该尽可能在枚举中使用有意义的名称。

public enum Courses
{
IT274_01AU,
CS210_06AU
}

(我知道你说过你不想要具体的代码示例,但我认为这个比任何解释都更清楚地说明了我的观点。)


其次,您在索引器方面走在了正确的轨道上,但您必须考虑如何将枚举与字符串描述数组相关联。请记住,枚举只不过是一组有限的美化(命名)数字。通过上面的 Courses 枚举,您有两个名为 IT274_01AUCS210_06AU 的值。因此在索引器中,您必须将这些值中的每一个映射到字符串描述。有多种方法可以做到这一点,但最简单的一种是 switch 语句,例如:

switch (myEnum)
{
case value1:
return string1;
case value2:
return string2;
}

然而,另一种选择是显式地将枚举值映射到它的基类型,并使用基类型索引到你的数组中。例如,如果您有枚举

public enum Enumerations
{
value1 = 0,
value2 = 1
}

然后您可以使用 myArray[(int)myEnum] 直接索引到数组中。这可能会有用,是一种稍微高级但代码行数较少且可以说更易于理解的方法。

关于c# - 如何使用索引器访问枚举项并将数组字符串分配给它以供显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com