对象和集合初始化器是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 },};