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