c# - C#中字典的文字符号?

标签 c# dictionary literals

我目前在 JavaScript 和用 C# 编程的服务器之间有一个 WebSocket。在 JavaScript 中,我可以使用关联数组轻松传递数据:

var data = {'test': 'val',
            'test2': 'val2'};

为了在服务器端表示这个数据对象,我使用 Dictionary<string, string> ,但这比在 JavaScript 中更“昂贵”:

Dictionary<string, string> data = new Dictionary<string,string>();
data.Add("test", "val");
data.Add("test2", "val2");

关联数组是否有某种文字符号/Dictionary在 C# 中?

最佳答案

您使用 collection initializer语法,但你仍然需要制作一个 new Dictionary<string, string> object first 作为快捷语法被翻译成一堆 Add()调用(如您的代码):

var data = new Dictionary<string, string>
{
    { "test", "val" }, 
    { "test2", "val2" }
};

在 C# 6 中,您现在可以选择对 Dictionary 以及支持 indexers 的任何其他类型使用更直观的语法。 .上面的语句可以改写为:

var data = new Dictionary<string, string>
{
    ["test"] = "val",
    ["test2"] = "val2"
};

与集合初始值设定项不同,这会在后台调用索引器 setter ,而不是适当的 Add()方法。

关于c# - C#中字典的文字符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4980500/

相关文章:

c - 多个相同文字的内存使用与 const

c - 字符串文字是否算作部分初始化器和零初始化?

c# - 使用 SQLite 更新 EF Core 应用程序中的实体会出现 DbUpdateConcurrencyException

c# - .Net 4.0 中的动态程序集加载

python - 具有数据框两个键的字典

python - 在 Python 的列表中对嵌套字典进行排序?

c# - 为什么 Observable.Finally 在 Observable.Generate 完成时不被调用?

c# - XAML 标签文本 : Binding + DynamicResource (String Format? )

ios - 为什么 swift 在此处使用结构作为字典键而不是字符串?

.net - 在 C# 中,术语 "Primitive"和 "Literal"可以互换吗?