已编辑:2009年3月23日更新。见底部的其余部分。我仍然遇到索引器问题。再帮助或例子真的会帮助我。
写一个包含所有枚举的类MyCourses 您正在参加的课程。 这个枚举应该嵌套在里面 你的课程MyCourses。你的班 还应该有一个数组字段 提供简短描述(作为 每个课程的字符串)。写 一个索引器,它带你的一个 列举的课程作为索引和 返回的String描述 当然。
- 醇>
编写一个包含提供索引器的MyFriends类 访问朋友的名字。
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...
谢谢!
答案 0 :(得分:2)
首先,枚举的基类型必须是数值类型,因此您不能使用基类型字符串进行枚举。以下内容不会编译:
public enum CourseName
{
Class1 = "IT274-01AU: Intermediate C#",
Class2 = "CS210-06AU: Career Development Strategies"
}
因此,将其更改为使用int的默认基本类型。像下面这样的东西会做,但你可以根据需要更改名称(例如,你可能想要使用课程名称而不是代码)。还要记住,在枚举中应尽可能使用有意义的名称。
public enum Courses
{
IT274_01AU,
CS210_06AU
}
(我知道你说你不想要特定的代码示例,但我认为这一点比任何解释都清楚地说明了我的观点。)
其次,您使用索引器处于正确的轨道上,但您必须考虑如何将枚举与字符串描述数组相关联。请记住,枚举只不过是一组有限的美化(命名)数字。使用上述Courses
枚举,您有两个名为IT274_01AU
和CS210_06AU
的值。因此,在索引器中,您必须将每个值映射到字符串描述。有多种方法可以做到,但最简单的方法是switch语句,例如:
switch (myEnum)
{
case value1:
return string1;
case value2:
return string2;
}
然而,另一个选择是将枚举值显式映射到其基类型,并使用基类型索引到数组中。例如,如果你有枚举
public enum Enumerations
{
value1 = 0,
value2 = 1
}
然后您可以使用myArray[(int)myEnum]
直接索引到数组中。这可能是有用的,并且是稍微更先进但更少行代码且可以说更容易理解的方法。
答案 1 :(得分:1)
(抵制编写代码的冲动)
首先,枚举是一个命名的整数列表,并且(根据MSDN)枚举的已批准类型是byte,sbyte,short,ushort,int,uint,long或ulong。
另外,请记住,courseDescription是一个字符串数组,索引器的目的是为您提供该数组的索引(即。[0]返回第一个字符串,[1]返回第二个字符串,等等)。