在学校,对于C#课程,他们给了我们一个非常神秘的任务。 Main()
中有以下代码,我们必须编写类Group
。
Group group = new Group(3);
group["wholenumber"] = 123;
group["decimalnumber"] = 456.78;
group["text"] = "Hello world!";
double sum = (double)(int)group["wholenumber"] + (double)group["decimalnumber"];
Console.WriteLine("Sum of numbers is {0}", sum);
这有什么意义吗?我以为你不能用字符串作为索引?我会理解是否有变量名称作为索引,所以他们可以通过决赛,但现在我没有得到它。我试图使用谷歌并找到类似数组的字典,可以使用字符串作为索引,但所有值都不同 - 首先是int,第二个是double,last是字符串,所以字典不会起作用。
目前我们正在谈论静态类,常量,析构函数和索引器
提前致谢
答案 0 :(得分:3)
既然你提到你正在谈论索引器,那么这正是你需要为你的Group
类实现的(假设main
中的代码是固定的,你需要创建一个类为该代码工作。)
根据MSDN: Indexers (C# Programming Guide):
索引器不必用整数值编制索引;由您决定如何定义特定的查找机制。
所以在这种情况下,您可以使用以下代码:
public class Group
{
public object this[string s]
{
get
{
//return something based on "s"
}
set
{
//set something based on "s"
}
}
}
答案 1 :(得分:1)
但所有值都不同 - 首先是int,第二个是double,last是 字符串,所以字典不会工作。
实际上它将作为System.object是一个公共基类。这就是为什么集团的所有检索都有一个演员。并不是说这个组“类”具有任何逻辑意义 - 没有人会为此写一个单独的类,我认识的每个人都会写:
var group = new Dictionary<string,object> (3);
请注意,由于是关键字,因此组是一个糟糕的变量名称。
答案 2 :(得分:1)
你可以使用Dictionary<TKey, TValue>
,但有些人说,但你可以继承它,样本:
public class Group : Dictionary<string, object>
{
}
像字典一样使用:
Group g = new Group();
g.Add("wholenumber", 123);
g.Add("decimalnumber", 456.78);
g.Add("text", "Hello world!");
要阅读的问题是值为object
,您需要将其转换为正确的类型。