当前位置:  开发笔记 > 编程语言 > 正文

如何访问词典项?

如何解决《如何访问词典项?》经验,为你挑选了2个好方法。

我正在开发一个C#VS2008/SQL Server网站应用程序,并且是Dictionary类的新手.你能告诉你最好的方法吗?这是一段代码:

SqlConnection conn2 = new SqlConnection(connString);
SqlCommand cmd = conn2.CreateCommand();
cmd.CommandText = "dbo.AppendDataCT";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn2;
SqlParameter p1, p2, p3;
foreach (string s in dt.Rows[1].ItemArray)
{
    DataRow dr = dt.Rows[1]; // second row
    p1 = cmd.Parameters.AddWithValue((string)dic[0], (string)dr[0]);
    p1.SqlDbType = SqlDbType.VarChar;
    p2 = cmd.Parameters.AddWithValue((string)dic[1], (string)dr[1]);
    p2.SqlDbType = SqlDbType.VarChar;
    p3 = cmd.Parameters.AddWithValue((string)dic[2], (string)dr[2]);
    p3.SqlDbType = SqlDbType.VarChar;
}

但这给了我编译器错误:

The best overloaded method match for 'System.Collections.Generic.Dictionary.this[string]' has some invalid arguments

我只想从"dic"访问每个值并加载到这些SQL参数中.我该怎么做呢?我必须输入密钥吗?键被命名为"col1","col2"等,因此不是最方便用户的.还有其他提示吗?谢谢!



1> Graham Clark..:

Dictionary一种类型的地图对象转换成另一种类型的对象.在你的情况下,你有一个Dictionary.所以,如果你有这样的初始化:

Dictionary dic = new Dictionary()
{
   { "key1", "value1" },
   { "key2", "value2" },
   { "key3", "value3" }
};

你可以key2通过这样做获得价值

dic["key2"]; // gives "value2"

Dictionary是强类型的,所以不需要任何铸造.正如Jon Skeet所说,你List在这里可能会更好.您可以通过整数索引访问它们.



2> Jon Skeet..:

你似乎在试图访问一个Dictionary整数索引.你不能这样做 - 你必须通过键查找值,这是一个字符串.

如果您不想使用字符串键,为什么要使用a Dictionary开头?你能用一个List还是一个Dictionary

需要注意的是,一旦你已经成功地正确使用索引,你将不再需要转换为字符串.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有