C#的擴展方法解說


C#的擴展方法解說

擴展方法的目的就是為一個現有類型添加一個方法,現有類型既可以是int,string等數據類型,也可以是自定義的數據類型。

為數據類型的添加一個方法的理解:一般來說,int數據類型有個Tostring的方法,就是把int 數據轉換為字符串的類型,比如現在我們想在轉換成字符串的時候還添加一點東西,比如增加一個字符 a .那么之前的Tostring就不好使了,因為它只是它我們的int數據轉換為string類型的,卻並不能添加一個字母 a.所以這就要用到所謂的擴展方法了。

首先我們看一個給現有的類型增加一個擴展方法。

我們想給string 類型增加一個Add方法,該方法的作用是給字符串增加一個字母a.

//必須是靜態類才可以添加擴展方法
Static class Program
       {
        static void Main(string[] args)
        {
            string str = "quzijing";
//注意調用擴展方法,必須用對象來調用 
            string Newstr = str.Add();
            Console.WriteLine(Newstr);
            Console.ReadKey();
        }
//聲明擴展方法
        //擴展方法必須是靜態的,Add有三個參數
        //this 必須有,string表示我要擴展的類型,stringName表示對象名
        //三個參數this和擴展的類型必不可少,對象名可以自己隨意取如果需要傳遞參數,//再增加一個變量即可

        public static  string  Add(this string stringName)
        {
            return stringName+"a";
        }
}

我們再來嘗試給我們自定義的類型增加一個擴展方法,並增加一個傳遞的參數。

首先我們聲明一個Student類,它包含了兩個方法StuInfo,getStuInfo.實例代碼如下:

public class Student
    {
        public string StuInfo()
        {
            return "學生基本信息";
        }
        public  string getStuInfo(string stuName, string stuNum)
        {
       return string.Format("學生信息:\n" + "姓名:{0} \n" + "學號:{1}", stuName, stuNum);
        }
     }

之后我們再聲明一個名為ExtensionStudentInfo的靜態類,注意必須為靜態

這個類的作用就是包含一些我們想要擴展的方法,在此我們聲明兩個Student類型的擴展方法,Student類型為我們自定義的類型。示例代碼如下:

 

public static class ExtensionStudentInfo
    {
        //聲明擴展方法
        //要擴展的方法必須是靜態的方法,Add有三個參數
        //this 必須有,string表示我要擴展的類型,stringName表示對象名
        //三個參數this和擴展的類型必不可少,對象名可以自己隨意取如果需要傳遞參數,再增加一個變量即可
        public static string ExtensionStuInfo(this Student stuName)
        {
            return stuName.StuInfo();
        }
        //聲明擴展方法
        //要擴展的方法必須是靜態的方法,Add有三個參數
        //this 必須有,string表示我要擴展的類型,stringName表示對象名
        //三個參數this和擴展的類型必不可少,對象名可以自己隨意取如果需要傳遞參數,在此我們增加了兩個string類型的參數
        public static string ExtensionGetStuInfo(this Student student, string stuname, string stunum)
        {
            return student.getStuInfo(stuname, stunum)+"\n讀取完畢";
        }
    }

以上的工作做完之后便可以使用我們的擴展方法了,注意必須要用對象來調用擴展方法。

static void Main(string[] args)
        {
            Student newstudent = new Student();
//要使用對象調用我們的擴展方法
            string stuinfo = newstudent.ExtensionStuInfo();
            Console.WriteLine(stuinfo);
//要使用對象調用我們的擴展方法
string stuinformation = newstudent.ExtensionGetStuInfo("quzijing", "20081766");
            Console.WriteLine(stuinformation);
            Console.ReadKey();
        }

 


免責聲明!

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



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