擴展方法


擴展方法被定義為靜態方法,但它們是通過實例方法語法進行調用的。 它們的第一個參數指定該方法作用於哪個類型,並且該參數以 this 修飾符為前綴。 擴展方法當然不能破壞面向對象封裝的概念,所以只能是訪問所擴展類的public成員。

擴展方法使您能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。

1.this擴展方法 

必須是靜態類才可以添加擴展方法 :聲明擴展方法的步驟:類必須是static,方法是static

實例1、給string 類型增加一個Add方法,該方法的作用是給字符串增加一個字母a

第一步:聲明擴展方法

//聲明擴展方法

//擴展方法必須是靜態的(是否有參數),Add有三個參數:this 必須有,string表示我要擴展的類型,stringName表示對象名

//三個參數this和擴展的類型必不可少,對象名可以自己隨意取如果需要傳遞參數,再增加一個變量即可

 

public static  string  Add(this string stringName)//在調用是stringName接受str的值                            this string:表示為string添加一個add方法
        {
            return stringName+"a";
        }

第二步:調用擴展方法,必須用對象來調用
 Static class Program
       {
        static void Main(string[] args)
        {
            string str = "quzijing";
            //注意調用擴展方法,必須用對象來調用 
            string Newstr = str.Add();
            Console.WriteLine(Newstr);
            Console.ReadKey();
        }
 
        

實例2、為string擴展一個驗證郵件類

(1)、擴展方法

            
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Text.RegularExpressions;

 

//聲明擴展方法的步驟:類必須是static,方法是static,

//第一個參數是被擴展的對象,前面標注this。

//使用擴展方法的時候必須保證擴展方法類已經在當前代碼中using

namespace 擴展方法

{

    //擴展方法必須是靜態的

    public static class StringHelper

    {

        //擴展方法必須是靜態的,第一個參數必須加上this

        public static bool IsEmail(this string _input)

        {

            return Regex.IsMatch(_input, @"^\\w+@\\w+\\.\\w+$");

        }

        //帶多個參數的擴展方法

        //在原始字符串前后加上指定的字符

        public static string Quot(this string _input, string _quot)

        {

            return _quot + _input + _quot;

        }

    }

}

        

(2)、使用方法

            
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace 擴展方法

{

    class Program

    {

        static void Main(string[] args)

        {

            string _myEmail = "abc@163.com";

            //這里就可以直接使用string類的擴展方法IsEmail了

            Console.WriteLine(_myEmail.IsEmail());

            //調用接收參數的擴展方法

            Console.WriteLine(_myEmail.Quot("!"));
Console.ReadLine(); } } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM