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. };


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM