.NET 增长扩展方法

声明:经过一个js的实例来告诉你C#也能够实现这样的效果。编辑器

在JS中是这样实现的:函数

你是否见过JS中给系统默认Array对象增长一个自定义查重方法containsthis

在没有给Array原型上增长contains以前,经过vs编辑器是没法经过点的方式来调用containsspa

<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以后,即可以经过点的方式进行调用prototype

 

在C#中是这样实现的:3d

需求:咱们要在String对象上增长一个ToString2()的函数code

在没有给String对象增长ToString2()以前是没法经过点来调用ToString2()函数,下图是没法找到ToString2()函数对象

当增长了扩展函数后即可以经过点的方式来调用扩展函数blog

语法:定义扩展方法,它必须是一个静态类static,而且要使用this关键字来修饰要对那个对象进行操做。以上重点和最终效果均用红线标注。ip

实现代码:

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-师傅
%>

 

你学会了吗?是否是逼格满满?

相关文章
相关标签/搜索