0 var關鍵字:隐式類型的局部變量(C# 程式設計指南)
http://msdn.microsoft.com/zh-cn/library/bb384061.aspx
隻可以賦予局部變量推斷“類型”var 而不是顯式類型。var 關鍵字訓示編譯器根據初始化語句右側的表達式推斷變量的類型。推斷類型可以是内置類型、匿名類型、使用者定義類型或 .NET Framework 類庫中定義的類型。有關如何使用 var 初始化數組的更多資訊,請參見隐式類型的數組(C# 程式設計指南)。

Code
// i is compiled as an int
var i = 5;
// s is compiled as a string
var s = "Hello";
// a is compiled as int[]
var a = new[] { 0, 1, 2 };
// expr is compiled as IEnumerable<Customer>
// or perhaps IQueryable<Customer>
var expr =
from c in customers
where c.City == "London"
select c;
// anon is compiled as an anonymous type
var anon = new { Name = "Terry", Age = 34 };
// list is compiled as List<int>
var list = new List<int>();
1 自動實作的屬性(C# 程式設計指南)
http://msdn.microsoft.com/zh-cn/library/bb384054.aspx
當屬性通路器中不需要其他邏輯時,自動實作的屬性可使屬性聲明變得更加簡潔。當您如下面的示例所示聲明屬性時,編譯器将建立一個私有的匿名後備字段,該字段隻能通過屬性的 get 和 set 通路器進行通路。

Code
class LightweightCustomer
{
public double TotalPurchases { get; set; }
public string Name { get; private set; } // read-only
public int CustomerID { get; private set; } // read-only
}
2 對象和集合初始值設定項(C# 程式設計指南)
http://msdn.microsoft.com/zh-cn/library/bb384062.aspx
2.1對象初始值設定項
使用對象初始值設定項可以在建立對象時向對象的任何可通路的字段或屬性配置設定值,而無需顯式調用構造函數。下面的示例示範如何将對象初始值設定項用于命名類型。請注意,在 Test 類中使用了自動實作的屬性。有關更多資訊,請參見自動實作的屬性(C# 程式設計指南)。

Code
private class Cat
{
// Auto-implemented properties
public int Age { get; set; }
public string Name { get; set; }
}
static void MethodA()
{
// Object initializer
Cat cat = new Cat { Age = 10, Name = "Sylvester" };
}
2.2集合初始值設定項
使用集合初始值設定項可以在初始化一個實作了 IEnumerable 的集合類時指定一個或多個元素初始值設定項。元素初始值設定項可以是簡單的值,也可以是表達式或對象初始值設定項。通過使用集合初始值設定項,您将無需在源代碼中指定多個對該類的 Add 方法的調用;編譯器會添加這些調用。
下面的示例示範了兩個簡單的集合初始值設定項:
List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<int> digits2 = new List<int> { 0 + 1, 12 % 3, MakeInt() };
下面的集合初始值設定項使用對象初始值設定項來初始化在前面的一個示例中定義的 Cat 類的對象。
List<Cat> cats = new List<Cat>
{
new Cat(){ Name="Sylvester", Age=8 },
new Cat(){ Name="Whiskers", Age=2},
new Cat() { Name="Sasha", Age=14}
};
3匿名類型(C# 程式設計指南)
匿名類型提供了一種友善的方法,可用來将一組隻讀屬性封裝到單個對象中,而無需首先顯式定義一個類型。類型名由編譯器生成,并且不能在源代碼級使用。這些屬性的類型由編譯器推斷。匿名類型無法強制轉換為除 object 以外的任何類型。 下面的示例示範一個用兩個分别名為 Amount 和 Message 的屬性初始化的匿名類型。

Code
static void Main(string[] args)
{
var v = new { Amount = 108, Message = "Hello" };
// v.Amount = 100;
Console.WriteLine(v.Amount);
Console.ReadKey();
}
當用其他已定義類型對象的一些屬性初始化匿名類型時,如果您沒有在匿名類型中指定成員名稱,編譯器會為匿名類型成員指定與用于初始化這些成員的屬性相同的名稱。必須為使用表達式初始化的屬性提供名稱。
var productQuery =
from prod in products
select new { prod.Color, prod.Price };
foreach (var v in productQuery)
{
Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price);
}