欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET 增加扩展方法

程序员文章站 2022-06-28 20:49:24
声明:通过一个js的实例来告诉你C#也可以实现这样的效果。 在JS中是这样实现的: 你是否见过JS中给系统默认Array对象增加一个自定义查重方法contains 在没有给Array原型上增加contains之前,通过vs编辑器是无法通过点的方式来调用contains 当给Array原型上增加con ......

声明:通过一个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>

 

.NET 增加扩展方法

当给array原型上增加contains之后,便可以通过点的方式进行调用

.NET 增加扩展方法

 

在c#中是这样实现的:

需求:我们要在string对象上增加一个tostring2()的函数

在没有给string对象增加tostring2()之前是无法通过点来调用tostring2()函数,下图是无法找到tostring2()函数

.NET 增加扩展方法

当增加了扩展函数后便可以通过点的方式来调用扩展函数

.NET 增加扩展方法

语法:定义扩展方法,它必须是一个静态类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-师傅
%>

 

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

上一篇: 算术运算符

下一篇: 吃羊吗