一键多值声明字典

Posted

技术标签:

【中文标题】一键多值声明字典【英文标题】:Declare dictionary with one key multiple values 【发布时间】:2018-07-16 09:41:50 【问题描述】:

C# 我正在使用像这样的字典:

var dict = new Dictionary<byte, Tuple<string, string>>();           
Tuple<string, string> t = new Tuple<string, string>(label, unit);

我想将它声明为类的数据成员。但它说

上下文关键字“var”只能出现在局部变量声明或脚本代码中

我该如何解决这个问题?

【问题讨论】:

试试Dictionary&lt;byte, Tuple&lt;string, string&gt;&gt; dict = new Dictionary&lt;byte, Tuple&lt;string, string&gt;&gt;();。在类字段声明中不能使用var 正如它所说,仅将 var 用作局部变量声明或在脚本代码中。除此之外,请使用类型本身。 您在类中或函数内将其声明为局部变量?如果在类中,变量不应该使用 var,你应该 Dictionary> dict = new Dictionary>(); 【参考方案1】:

错误信息很清楚。不能使用var 声明类成员,只能用于局部变量。

对于类成员,您需要使用显式类型:

public class MyClass

    Dictionary<byte, Tuple<string, string>> dict = new Dictionary<byte, Tuple<string, string>>();

    // ...

【讨论】:

【参考方案2】:

在 C# 中你不能使用 var 来声明类成员:

这里是实现此功能的技术问题。常见的 案例看起来很简单,但更难的案例(例如,字段引用 链或循环中的其他字段,包含匿名的表达式 类型)不是。

取自博文Why no var on fields?和post。

在这种情况下,您需要声明显式类型:

Dictionary<byte, Tuple<string, string>> dict = new Dictionary<byte, Tuple<string, string>>();

【讨论】:

以上是关于一键多值声明字典的主要内容,如果未能解决你的问题,请参考以下文章

Python 字典中一键对应多个值

一键多值的Alamofire参数

多映射通用集合类(C#实现)--支持一键多值存储

Python-Requests

[功能集锦] 002 - mysql查询数据库字典+导出+样式一键整合至excel

[功能集锦] 002 - mysql查询数据库字典+导出+样式一键整合至excel