所以我正在创建一个映射String键和对象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中,创建一个整数值,从索引0处的ArrayList中提取项目,然后显示消息框。
我原来是一名java程序员,在Java中我本可以做到这一点:
int value = op.startCollecting().get("Henvendelser").get(0);
我在C#中做错了吗?有更简单的方法来检索数据吗?
答案 0 :(得分:2)
首先要做的事情:你应该在c#中使用泛型lists而不是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());
}
答案 1 :(得分:1)
您可以像这样检索您的值:
var value = op.startCollection()["Henvendelser"];
答案 2 :(得分:1)
假设您的StartCollecting
方法大致如此......
class Operator
{
public IDictionary<string, IList<int>> StartCollecting()
{
...
}
}
...您可以使用IDictionary
和IList
的索引器来检索您的值:
op.StartCollecting()["Henvendelser"][0]