.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>
当给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-师傅 %>
你学会了吗?是不是逼格满满?
推荐阅读
-
在php中使用swoole扩展时,server端的回调函数中如何使用thinkphp框架的方法?
-
ES6知识点整理:Array常用扩展的应用方法
-
开启PHP exif扩展方法详解,phpexif扩展详解_PHP教程
-
php简单获取文件扩展名的方法,_PHP教程
-
Yii2分页的使用及其扩展方法详解,yii2分页扩展详解_PHP教程
-
ASP.NET 全局异常处理的方法
-
提高 asp.net Web 应用性能的方法和技巧
-
ASP.NET4.0中JavaScript脚本调用Web Service 方法
-
CI框架源码解读之利用Hook.php文件完成功能扩展的方法_php实例
-
给IDistributedCache新增了扩展方法GetOrCreate、GetOrCreateAsync