在C#类中使用什么数据类型?

时间:2014-04-23 18:42:51

标签: c#

在学校,对于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是字符串,所以字典不会起作用。

目前我们正在谈论静态类,常量,析构函数和索引器

提前致谢

3 个答案:

答案 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,您需要将其转换为正确的类型。