程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0新特征之創建和初始化集合對象(1)

C# 3.0新特征之創建和初始化集合對象(1)

編輯:關於C語言

一、引言

C# 3.0中新的對象初始化器是一種簡單的語法特征-借助於 這種特征,對象的構建和初始化變得非常簡單。假定你有一個類Student,它看 起來有如下樣子:

public class Student{
 public string firstName;
 public string lastName;
}

那麼,你可以使用對象初始化器來創建這個類的一個對象,如下所示:

var student1 = new Student{firstName = "Bruce", lastName = "Willis"};

C# 3.0中新的集合初始化器 語法也具有類似操作特征。例如,實現 System.Collections.Generic.ICollection<T>的任何對象都可以使用一個集 合初始化器來初始化它的值。

一個集合初始化器由下列部分組成:

· 一個對象初始化器序列,用"{"和"}"符 號包括,並且由逗號隔開。

· 元素初始化器,它們中每一個都指 定一個元素以被添加到指定的集合對象中(元素初始化器不能是一個集合初始化 器中的賦值表達式)。

那麼,究竟它是如何工作的呢?一個集合初始化 器必須遵循下列規則:

· 應用集合初始化器的每一個集合對象必 須是一種實現了System.Collections.Generic.ICollection<T>的類型(恰好 針對一個T)。

· 必須存在從每一個元素初始化器到T類型的一種 隱式轉換。一個集合初始化器針對每一個指定的元素都會按序調用ICollection <T>.Add(T)方法。

作為一個例子,下面的集合初始化器創建並初始化 一個新的字符串集合-這個集合具有3個成員: "Alice","Bob"和"Chris",參考如下:

List<string> names = new List<string> { "Alice", "Bob", "Chris" };

注意:所有的初始值都是字符串類型。否則,你將得到一個編譯器錯誤。

二、實現集合初始化

假定你想描述一個班及其中的注冊同學。為 此,你可以通過使用C# 3.0中的集合初始化器編程實現,如下所示:

using System;
using System.Collections.Generic;
using System.Text;
using System.Query;
using System.XML.XLinq;
using System.Data.DLinq;
namespace CollectionInitializer
{
 class Program
 {
   public class MyClass
  {
   public string nameofClass;
   public List<string> studentNames = new List <string>();
  }
  static void Main(string[] args)
  {
   var classes = new List<MyClass>
   {
    new MyClass
    {
     nameofClass = "ScIEnce",
     studentNames = {"Laura", "George"}
    },
    new MyClass
     {
     nameofClass = "Commerce",
      studentNames = {"Bill", "Hillary"}
     }
   };
  }
 }
}

如果你有Visual Studio 2005並且安裝了LINQ PrevIEw,那麼可以在IDE中編譯上面的代碼。

如果你沒有VS 2005但是安裝了LINQ PrevIEw,那麼你可以使用下列命令 來從命令行編譯該代碼:

C:\Program Files\LINQ PrevIEw\Bin\Csc.exe
/reference:"C:\Program Files\LINQ PrevIEw\Bin\System.Data.DLinq.dll"
/reference:C:\Windows\Microsoft.Net\Framework\v2.0.50727 \System.Data.dll
/reference:C:\Windows\Microsoft.Net\Framework\v2.0.50727 \System.dll
/reference:"C:\Program Files\LINQ PrevIEw\Bin\System.Query.dll"
/reference:C:\Windows\Microsoft.Net\Framework\v2.0.50727 \System.XML.dll
/reference:"C:\Program Files\LINQ PrevIEw\Bin\System.XML.XLinq.dll" Program.cs

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved