.NET 增加擴展方法


聲明:通過一個js的實例來告訴你C#也可以實現這樣的效果。

在JS中是這樣實現的:

你是否見過JS中給系統默認Array對象增加一個自定義查重方法contains

在沒有給Array原型上增加contains之前,通過vs編輯器是無法通過點的方式來調用contains

<script>
         //Array對象本身沒有contains方法,我在這里為它增加一個擴展方法
         //這樣就可以通過“點”的方式來像系統內置函數一樣使用,是不是逼格滿滿?
         Array.prototype.contains = function (val) {
             for (var i = 0; i < this.length; i++) {
                 if (this[i] == val) {
                     return true;
                 }
             }
             return false;
         }
  
         var arr = [1, 3, 5, 7];
         var res=arr.contains(1);
         //res=true
    </script>

 

當給Array原型上增加contains之后,便可以通過點的方式進行調用

 

在C#中是這樣實現的:

需求:我們要在String對象上增加一個ToString2()的函數

在沒有給String對象增加ToString2()之前是無法通過點來調用ToString2()函數,下圖是無法找到ToString2()函數

當增加了擴展函數后便可以通過點的方式來調用擴展函數

語法:定義擴展方法,它必須是一個靜態類static,並且要使用this關鍵字來修飾要對那個對象進行操作。以上重點和最終效果均用紅線標注。

實現代碼:

1.新建一個StringExtension類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Helper {
    public static class StringExtension {
        public static String ToString2(this string s) {
            return s+" by-師傅";
        }
    }
}

2.在頁面(Default.aspx)上面調用

<%@ Page Language="C#" %>
<%--需要引入擴展類的命名空間--%>
<%@ Import Namespace="Helper" %>
<%
    string res = string.Empty;
    string str = "我是字符串";
    res = str.ToString2();
    Response.Write(res);
    //最終輸出:我是字符串 by-師傅
%>

 

你學會了嗎?是不是逼格滿滿?


免責聲明!

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



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