zoukankan
html css js c++ java
.net3.0中的扩展方法(示例)
先定义一个类Utils,在该类中定义了一个string类的扩展方法_IsNull
using
System;
namespace
LinqDemo.App_Code
{
public
static
class
Utils
{
/**/
///
<summary>
///
传统写法
///
</summary>
///
<param name="s"></param>
///
<returns></returns>
public
static
bool
IsNull(
string
s)
{
return
string
.IsNullOrEmpty(s);
}
/**/
///
<summary>
///
定义string类的一个扩展方法(注意方法签名中的this关键字,且必须定义在静态类中)
///
</summary>
///
<param name="s"></param>
///
<returns></returns>
public
static
bool
_IsNull(
this
string
s)
{
return
string
.IsNullOrEmpty(s);
}
}
}
接下来使用这个扩展方法
using
System;
using
LinqDemo.App_Code;
//
这里只要引用扩展方法所在类的命名空间即可
namespace
LinqDemo
{
class
Program
{
static
void
Main(
string
[] args)
{
string
s
=
""
;
//
这里可以看到_IsNull已经变成string类的一个扩展方法了,vs2008 IDE环境也可以自动感知此方法
Console.WriteLine(s._IsNull());
//
string类的扩展方法(这个有点类似javascript的prototype)
Console.WriteLine(
"
------------------
"
);
Console.WriteLine(Utils._IsNull(s));
//
扩展方法也可以这样当作常规方法来调用
Console.WriteLine(
"
------------------
"
);
Console.WriteLine(Utils.IsNull(s));
//
当然这样的传统写法也是可以的
Console.ReadLine();
}
}
}
小记:.net3.0中的扩展方法在使用效果上看,几乎与javascript中的prototype如出一辙,javascript中如果在String的prototype原型上定义了某个方法,会使所有String的实例都能直接使用该方法,参看以下js代码
<
script type
=
"
text/javascript
"
>
String.prototype._IsNull
=
function
()
{
return
(
this
==
""
||
this
==
null
||
this
==
"
undefined
"
);
}
var
s
=
""
;
document.write(s._IsNull())
<
/
script>
作者:
菩提树下的杨过
出处:
http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
相关阅读:
Javascript闭包的一些研究
pytorchvision安装问题
CUDA 基础
语音识别入门推荐文献【转】
【e2e】espnet框架安装问题集锦
维特比算法与beam search
kaldi识别问题集锦
语音识别-重要开源数据
git提交失败总结
钟南山病后反思: 寿命长短, 不取决于衰老和疾病【转】
原文地址:https://www.cnblogs.com/yjmyzz/p/1063898.html
最新文章
JDK 源码分析(4)—— HashMap/LinkedHashMap/Hashtable
分享一下自己写的一个vscode-leetcode插件
树的递归与非递归遍历方法
【LeetCode】327. Count of Range Sum
【LeetCode】87. Scramble String
【LeetCode】84. Largest Rectangle in Histogram
一道关于回文的笔试题
【LeetCode】220. Contains Duplicate III
【LeetCode】98. Validate Binary Search Tree
【LeetCode】91. Decode Ways
热门文章
【LeetCode】152. Maximum Product Subarray
jQuery使用JSONP时的错误处理
Git简明教程二、开始进行版本管理
Git简明教程一、基本概念
JS中给函数参数添加默认值
蒙提霍尔悖论(三门问题)终极分析(补充)附完整源码
蒙提霍尔悖论(三门问题)终极分析
为什么我们看到镜子中的自己是左右颠倒的
又见浮点数精度问题
利用数学模型帮助选择中意的电脑型号
Copyright © 2011-2022 走看看