.NET 简单的扩展方法使用。
写代码时,我们经常会碰到dll中提供的方法,不够用或者不好用的情况。而且我们也不方便去更改dll本身的源码。
这时候我们可以使用.NET提供的“扩展方法”去解决这个问题。
下面我写几个简单的扩展方法在这里抛砖引玉,如有问题,请各位大大指正。
写代码时,我们经常会对string类型的数据进行操作,比如判断是否为null或者是否为空字符串。
平时我写代码基本就是如下代码:
string str = GetName(); //第一种
if (str == null || str == "")
{ } //第二种
if (string.IsNullOrEmpty(str))
{ }
这几种虽然也能判断字符串是否为空,但是用起来总是不太方便,我希望有一个“str.XXX()”的方法来直接判断是否为空。
这时候我就可以用“扩展方法”来实现我的想法。
因为我要为string类型加扩展方法,所以扩展方法类的名字必须是“原类名”+“Extensions”,并且是静态的。
所以这里我建立一个叫做“StringExtensions”的静态类。并写了一个IsNUllOrEmpty()的方法。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WindowsFormsTest
{
public static class StringExtensions
{
/// <summary>
/// 判断字符串是否为null或""
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
}
现在我就可以直接调用这个扩展方法去判断字符串是否为空了。代码如下:
string str = GetName(); //调用字符串扩展方法
if (str.IsNullOrEmpty())
{ }
类似的例子有很多,比如我想要将字符串转成int类型,平时我都是用“int.TryParse(str, out result);”进行转型。
有了扩展方法后,我就可以在扩展方法里面写一些复杂的操作,比如直接使用str.ToInt()就可以进行转型操作。
如下是转成string装成int的代码(也包含了刚才判断为空的方法):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WindowsFormsTest
{
public static class StringExtensions
{
/// <summary>
/// 判断字符串是否为null或""
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
} /// <summary>
/// 字符串转int
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int ToInt(this string str)
{
int outInt = 0;
int.TryParse(str, out outInt);
return outInt;
}
}
}
我经验比较初级,平时能用到的扩展方法,也只是类似这些简单的操作。不知道是不是有悖发明者的初衷,还是希望各位大大指正。
.NET 简单的扩展方法使用。的更多相关文章
- 使用扩展方法简化RadAjaxManager设置
相对于RadAjaxPanel,RadAjaxManager提供了更精确控制更新目标的设置,特别是在某些场景下,使用RadAjaxManager能够获得更好的性能. 但是,由于要明确设置目标,配置的代 ...
- C#中扩展方法的使用
MSDN中这样定义扩展方法:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. ...
- 扩展方法以及LinQ的学习
我们今天学习的内容其实还是蛮多的,学习了自动属性,扩展方法,复习初始化器,以及LinQ的一些方法,其实感觉有些还是很熟悉的,在前面的学习过程中有时间感觉学习的知识知道了怎么使用,但是还没有在项目中使用 ...
- C# DataTable扩展方法
在日常搬砖中,总结了一些简单的扩展方法. public static bool IsNullOrEmpty(this DataTable dt) { ; } public static bool Is ...
- 扩展方法 1 简单的string扩展方法
这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...
- c#扩展方法简单
扩展方法 怎样知道的. 这还得从项目的本身说起.该项目是一套的微软底层架构上搭建起来的. 全部的框架以及控件的封装,数据的传递方法都是总体的框架封装好的. 对经常使用的dropwodnlist控件的数 ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇
最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...
随机推荐
- NHibernate Session-per-request and MiniProfiler.NHibernate
NHibernate Session-per-request and MiniProfiler.NHibernate 前言 1.本文以mvc3为例,借鉴开源项目 NerdDnner项目完成nhiber ...
- ckedit 在源码模式下插入文本
ckedit的源码模式下是禁用insertText方法的 ,下面是解决方案 if(CKEDITOR.instances[Itemname].mode=='wysiwyg'){ CKEDITOR.ins ...
- linux学习心得之vim/Cvim篇
linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...
- WCF客户端与服务端通信简单入门教程
服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...
- 纯Python综合图像处理小工具(3)10种滤镜算法
<背景> 滤镜处理是图像处理中一种非常常见的方法.比如photoshop中的滤镜效果,除了自带的滤镜,还扩展了很多第三方的滤镜效果插件,可以对图像做丰富多样的变换:很多手机app实现了实 ...
- APP类别之比较与分析
大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析 前阵子笔者开发了一套系统可以用来收集亚洲五大地区上架APP的每日排名信息,希望观察出五大地区在APP上的喜好和使用程度之间的相异性. 所以,在下 ...
- CSDN博客越来越垃圾了,到处放广告
之前是在文章页放广告也就算了,现在连个人博客首页也要放广告!
- 2013Esri全球用户大会之互操作和标准
1:Esri在开源领域做过哪些工作? Esri一直以来就是开源技术的用户和支持者.我们相信,通过提供从上到下的开放平台可使我们的用户成为开发能力强大的解决方案的积极参与者.在现有技术形势下,我们正在将 ...
- SPL學習之SplDoublyLinkedList
Standard PHP Library(SPL)是官方提供的标准库,从php5.0.0开始已经默认实现在php中,我们可以类比它为ruby中的gem安装的包.spl里面实现了许多迭代器和数据结构对象 ...
- angularJS自定义 过滤器基础
先写个简单的例子,该过滤器是指定规定的字符串长度: html: <div ng-app="app" ng-controller="ctrl"> &l ...