📜  C#中的对象和集合初始化程序

📅  最后修改于: 2021-05-29 22:46:39             🧑  作者: Mango

对象和集合初始化器是C#语言的一个有趣且非常有用的功能。此功能提供了一种不同的方式来初始化类或集合的对象。此功能在C#3.0或更高版本中引入。使用它们的主要优点是使您的代码更具可读性,提供了一种在集合中添加元素的简便方法,并且通常用于多线程。

C#中的对象初始化器

在对象初始化程序中,可以在创建对象时将值初始化为类的字段或属性,而无需调用构造函数。在这种语法中,您可以创建一个对象,然后该语法将新创建的对象及其属性初始化为赋值中的变量。它还可以放置索引器,以初始化字段和属性,此功能在C#6.0中引入。

示例:在下面的示例中,Geeks类不包含任何构造函数,我们只需创建对象并使用main方法中的花括号同时初始化值即可。值的这种初始化称为对象初始化器。

// C# program to illustrate
// object initializer syntax
using System;
  
class Geeks {
  
    public string author_name
    {
        get;
        set;
    }
    public int author_id
    {
        get;
        set;
    }
    public int total_article
    {
        get;
        set;
    }
}
  
class GFG {
  
    // Main method
    static public void Main()
    {
  
        // Initialize fields using 
        // an object initializer
        Geeks obj = new Geeks() {
            author_name = "Ankita Saini",
            author_id = 102,
            total_article = 178};
          
        Console.WriteLine("Author Name: {0}", obj.author_name);
  
        Console.WriteLine("Author Id: {0}", obj.author_id);
  
        Console.WriteLine("Total no of articles: {0}",
                                   obj.total_article);
    }
}
输出:
Author Name: Ankita Saini
Author Id: 102
Total no of articles: 178

注意:编译器在编译上述程序时,会将值分配给对象,如下所示:

Geeks __geeks = new Geeks();
__geeks.author_name = "Ankita Saini";
__geeks.author_id = 102;
__geeks. total_article = 178;

Geeks obj =  __geeks;

C#中的集合初始化器

集合初始值设定项也类似于对象初始值设定项。集合的初始化类似,就像使用对象初始化程序初始化对象一样。换句话说,通常,我们使用Add()方法在集合中添加元素,但是使用集合初始化程序,您可以在不使用Add()方法的情况下添加元素。

例子 :

// C# program to illustrate how
// to create a SortedList using
// collection Initializer
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating another SortedList
        // using  collection Initializer to
        // initialize sortedlist
        SortedList my_slist = new SortedList() {
                             { "b.09", 234 },
                             { "b.11", 395 },
                             { "b.01", 405 },
                             { "b.67", 100 },
                             { "b.55", 500 }};
         
        foreach(DictionaryEntry pair in my_slist)
        {
            Console.WriteLine("{0} and {1}", pair.Key, pair.Value);
        }
    }
}
输出:
b.01 and 405
b.09 and 234
b.11 and 395
b.55 and 500
b.67 and 100

重要事项:

  • 您可以同时初始化collection和对象。

    例子:

    var author1 = new Geeks() { author_name = "Soniya", 
                                author_id = 103, 
                                total_article = 120 };
      
    var author2 = new Geeks() { author_name = "Siya",
                                author_id = 106, 
                                total_article = 90 };
      
    var author3 = new Geeks() { author_name = "Arpita",
                                author_id = 111,
                                total_article = 130 };
      
    List author = new List() {
                                    author1,
                                    author2,
                                    author3
    };
    
  • 您还可以将null用作集合初始值设定项中的元素。

    例子:

    SortedList my_slist = new SortedList() {
                              { 1.2, "Cat" },
                              { 1.3, null },
                              { 1.5, 234 },};