0

所以我目前正在创建一个映射字符串键和对象 ArrayList 的程序(当前为整数)

现在我创建了一个名为的类Operator,它有一个返回字典的方法。

为了测试我的 Dictionary 的输出,我决定使用 pop ( Messagebox) 来显示整数值。

然而,事实证明这对我来说是一个交易破坏者。经过一番研究,我设法组装了以下代码:

          Operator op = new Operator();
        ArrayList a;
        op.startCollecting().TryGetValue("Henvendelser", out a);
        int value = (int) a[0];
        MessageBox.Show("" + value);

注意 startCollecting 方法返回 Dictionary

在尝试获取数据时,我首先必须创建一个新的空 ArrayList,将现有的 ArrayList 克隆到该 ArrayList 中,创建一个整数值,从 ArrayList 索引 0 处拉取项目,然后显示消息框。

我最初是一名 Java 程序员,在 Java 中我可以做到这一点:

int value = op.startCollecting().get("Henvendelser").get(0);

我在 C# 中做错了吗?有没有更简单的检索数据的方法?

4

3 回答 3

2

首先要做的事情是:您应该在 c# 中使用泛型列表而不是 ArrayList。

对于你的问题:

    Dictonary<string, List<int>> dictonary = op.startCollecting();
    if(dictonary.ContainsKey("Henvendelser"))
    {
        List<int> list = dictonary["Henvendelser"];
        int value = list[0];
        MessageBox.Show(value.ToString());
    }
于 2013-06-10T12:53:46.850 回答
1

假设您的StartCollecting方法大致如下所示...

class Operator
{
    public IDictionary<string, IList<int>> StartCollecting() 
    {
        ...
    }
}

...您可以使用 和 的索引器IDictionaryIList检索您的值:

op.StartCollecting()["Henvendelser"][0]
于 2013-06-10T12:53:55.047 回答
1

您可以像这样检索您的值:

var value = op.startCollection()["Henvendelser"];
于 2013-06-10T12:50:33.513 回答