首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

LINQ 體驗 (2) — C# 3.0 新語言特性與改進 (上篇)

     編輯:關於ASP.NET

本系列第二篇將介紹 C# 3.0 引入的多項語言改進,這些特性建立在 .NET 2.0 核心之上,極大地簡化了日常開發,也是後續 LINQ 技術的基石。

C# 3.0 主要新特性概覽

  • 自動實作屬性
  • 隱含類型區域變數
  • 匿名類型
  • 物件與集合初始化器
  • 擴充方法
  • Lambda 運算式與運算式樹

自動實作屬性:告別樣板式 Get/Set

在 .NET 2.0 時代,定義一個屬性需要手寫私有欄位與存取邏輯:

public class User
{
    private int _id;
    private string _name;
    private int _age;

    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
    // Name、Age 同理...
}

C# 3.0 允許編譯器自動產生背端欄位與預設存取器:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

仍可單獨指定存取層級,例如 public string Name { get; private set; }。

隱含類型區域變數

使用 var 關鍵字,讓編譯器根據指派值推斷型別,並非動態型別,仍屬靜態強型別:

var number = 42;        // int
var text = "Hello";     // string
var list = new List(); // List

適用於匿名類型、LINQ 查詢結果等無法預先宣告型別的情境。

匿名類型

以物件初始化器語法快速建立唯讀、不可繼承的參考型別:

var product = new { Id = 1, Name = "筆記型電腦", Price = 25000 };
Console.WriteLine(product.Name); // 編譯期檢查

同一組屬性名稱、順序、型別的匿名類型在同一組件中共用同一個型別定義。

物件與集合初始化器

物件初始化器允許在建構子呼叫後直接設定屬性,集合初始化器則簡化 Add 呼叫:

// 物件初始化器
var user = new User { Id = 1, Name = "Tom" };

// 集合初始化器
var numbers = new List { 1, 2, 3 };
var dict = new Dictionary { { 1, "One" }, { 2, "Two" } };

小結

上述特性大幅減少樣板程式碼,提升可讀性。下一篇將詳細介紹擴充方法與 Lambda 運算式,敬請期待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved