我在网上的几本书和例子中看到如下代码。问题是它们都将单个方法输入到需要两个字典对象的字典对象中。
IDictionary statistics = connection.RetrieveStatistics();
返回IDE错误:
Error 1 Using the generic `type 'System.Collections.Generic.IDictionary<TKey,TValue>' requires '2' type arguments C:\Users\SGM7\Documents\ASPX 3_5 book code\Pro ASP.NET 3.5\Chapter07\Website\Tester.aspx.cs 22 9 C:\...\Website\`
所以即使connection.RetrieveStatistics()返回对,我怎样才能让IDictionary接受connection.RetrieveStatistics()?
这是代码块。
connection.Open();
connection.StatisticsEnabled = true;
IDictionary statistics = connection.RetrieveStatistics();
lblBytes.Text = "Received bytes: " + statistics["BytesReceived"].toString();
connection.Close();
lblBytes.Text += connection.State.ToString();
答案 0 :(得分:3)
右键单击VS中代码块中的RetrieveStatistics,然后选择“转到定义”以查看其定义方式。我的猜测是它是System.Collections.IDictionary,而不是System.Collections.Generic.IDictionary&lt; K,V&gt;。
或者,如果您使用的是.NET 3.5或更高版本,请使用var:
var statistics = connection.RetrieveStatistics();
答案 1 :(得分:1)
编译错误使您看起来像是在尝试使用通用字典而不是非通用字典。
RetrieveStatistics()
的返回类型为IDictionary
,而不是IDictionary<T,K>
你有使用声明将IDictionary
映射到其他地方吗?您是否尝试过明确使用System.Collections.IDictionary
?
例如:
System.Collections.IDictionary statistics = connection.RetrieveStatistics();
正如Jonathan所说,var
也会起作用,因为编译器只会弄清楚应该是什么类型。