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

C# 3.0 實戰入門:隱含類型變量與擴展方法雙劍合璧

     編輯:關於C語言

隱含類型區域變量:var 關鍵字

聲明與推斷


var i = 123;           // int
var d = 123.123;       // double
var s = "oec2003";     // string
var arr = new[] {1,2,3,4}; // int[]
var arr2 = new[] {1, 10, 100, 1000}; // int[]

編譯器根據初始值靜態推斷類型,生成 IL 與顯式聲明一致。非 JS 弱類型,非 object,純強類型推斷。

核心限制

  • 必須初始化(否則無法推斷)
  • 不可為 null
  • 僅限區域變量
  • foreach 中可用:foreach (var x in list)

擴展方法:為現有類型添加實例方法語法

定義規範

  1. 靜態類
  2. 靜態方法
  3. 首參數 this T 指定擴展類型

實戰:郵箱驗證擴展


public static class StringExtensions
{
    public static bool IsValidEmail(this string s)
    {
        var regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return regex.IsMatch(s);
    }
}

調用體驗:如同原生方法


protected void Button_Click(object sender, EventArgs e)
{
    if (this.TextBox1.Text.Trim().IsValidEmail())
        Response.Write("email is right");
    else
        Response.Write("email is error");
}

智能提示自動出現 IsValidEmail,調用語法與 string 實例方法無異。

組合威力:var + 擴展方法 + LINQ


var emails = new[] {"a@b.com", "invalid", "c@d.cn"};
var valid = emails.Where(e => e.IsValidEmail()).ToList();
// emails.Where 為擴展方法,e.IsValidEmail 為擴展方法,var 推斷 List

總結

var 消除類型聲明噪音,擴展方法賦予類型新能力。兩者結合,配合 LINQ,構成 C# 3.0 表達力躍升的鐵三角。掌握定義規範、限制邊界、組合模式,即可在項目中編寫更流暢、更具領域語義的代碼。

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