• C#中Dictionary的初始化方式


    本文翻译自:Proper way to initialize a C# dictionary with values?

    I am creating a dictionary in a C# file with the following code: 我正在使用以下代码在C#文件中创建字典:

    1. private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
    2. = new Dictionary<string, XlFileFormat>
    3. {
    4. {"csv", XlFileFormat.xlCSV},
    5. {"html", XlFileFormat.xlHtml}
    6. };

    There is a red line under new with the error: new错误下面有一条红线:

    Feature 'collection initilializer' cannot be used because it is not part of the ISO-2 C# language specification 无法使用功能'集合initilializer',因为它不是ISO-2 C#语言规范的一部分

    Can anyone explain what is going on here? 谁能解释一下这里发生了什么?

    EDIT: okay, so it turns out I was using .NET version 2. 编辑:好的,所以事实证明我使用的是.NET版本2。


    #1楼

    参考:https://stackoom.com/question/19WrK/使用值初始化C-字典的正确方法


    #2楼

    I can't reproduce this issue in a simple .NET 4.0 console application: 我无法在简单的.NET 4.0控制台应用程序中重现此问题:

    1. static class Program
    2. {
    3. static void Main(string[] args)
    4. {
    5. var myDict = new Dictionary<string, string>
    6. {
    7. { "key1", "value1" },
    8. { "key2", "value2" }
    9. };
    10. Console.ReadKey();
    11. }
    12. }

    Can you try to reproduce it in a simple Console application and go from there? 您可以尝试在简单的控制台应用程序中重现它并从那里开始吗? It seems likely that you're targeting .NET 2.0 (which doesn't support it) or client profile framework, rather than a version of .NET that supports initialization syntax. 您似乎可能是针对.NET 2.0(不支持它)或客户端配置文件框架,而不是支持初始化语法的.NET版本。


    #3楼

    Object initializers were introduced in C# 3.0, check which framework version you are targeting. 在C#3.0中引入了对象初始化程序,检查您要定位的框架版本。

    Overview of C# 3.0 C#3.0概述


    #4楼

    With C# 6.0, you can create a dictionary in following way: 使用C#6.0,您可以通过以下方式创建字典:

    1. var dict = new Dictionary<string, int>
    2. {
    3. ["one"] = 1,
    4. ["two"] = 2,
    5. ["three"] = 3
    6. };

    It even works with custom types. 它甚至适用于自定义类型。


    #5楼

    You can initialize a Dictionary (and other collections) inline. 您可以内联初始化Dictionary (和其他集合)。 Each member is contained with braces: 每个成员都包含大括号:

    1. Dictionary<int, StudentName> students = new Dictionary<int, StudentName>
    2. {
    3. { 111, new StudentName { FirstName = "Sachin", LastName = "Karnik", ID = 211 } },
    4. { 112, new StudentName { FirstName = "Dina", LastName = "Salimzianova", ID = 317 } },
    5. { 113, new StudentName { FirstName = "Andy", LastName = "Ruth", ID = 198 } }
    6. };

    See MSDN for details. 有关详细信息,请参阅MSDN


    #6楼

    Suppose we have a dictionary like this 假设我们有这样的字典

    1. Dictionary<int,string> dict = new Dictionary<int, string>();
    2. dict.Add(1, "Mohan");
    3. dict.Add(2, "Kishor");
    4. dict.Add(3, "Pankaj");
    5. dict.Add(4, "Jeetu");

    We can initialize it as follow. 我们可以按如下方式初始化它。

    1. Dictionary<int, string> dict = new Dictionary<int, string>
    2. {
    3. { 1, "Mohan" },
    4. { 2, "Kishor" },
    5. { 3, "Pankaj" },
    6. { 4, "Jeetu" }
    7. };
  • 相关阅读:
    spring boot RESTfuldemo测试类
    再谈Redirect(客户端重定向)和Dispatch(服务器端重定向)
    HTTP协议解析
    HTTP协议详解(真的很经典)
    JMeter进行简单的数据库(mysql)压力测试
    LoadRunner利用ODBC编写MySql脚本
    性能瓶颈的分析
    bug的处理流程
    Loadrunner11 录制手机App脚本多种方法介绍
    利用fiddler录制脚本
  • 原文地址:https://www.cnblogs.com/sunny3158/p/13039640.html
Copyright © 2020-2023  润新知