学习MVC时,学会了写扩展方法,用起来很方便。

01 using System;
02 using System.Collections.Generic;
03 using System.Linq;
04 using System.Web;
05 using System.Web.Mvc;
06 using System.Text;
07  
08 namespace MvcApp1.Content
09 {
10     //<%@ Import Namespace="MvcApp1.Content" %>
11     public static class MyHtmlHelper
12     {
13         public static string RedLable(this HtmlHelper helper, string lbstr)
14         {
15             StringBuilder sb = new StringBuilder();
16             sb.Append("<span style="color:red;">");
17             sb.Append(lbstr);
18             sb.Append("</span>");
19             return sb.ToString();
20         }
21     }
22 }

下面,用上面这个形式来写我的扩展方法

001 using System;
002 using System.Collections.Generic;
003 using System.Text;
004  
005 namespace Tools.Common
006 {
007     /// <summary>     /// 数据优化公共类
008     /// </summary>     public static class DataHelper
009     {
010         #region 根据是否为null或""返回string类型数据
011         /// <summary>         /// 根据是否为null或""返回string类型数据
012         /// </summary>         /// <param name="obj">要获取数据的对象
013         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回""
014         /// <returns></returns>         public static string IsNull(this object obj, params object[] defaultValue)
015         {
016             if (obj == null || "".Equals(obj.ToString().Trim()))
017             {
018                 if (defaultValue.Length == 0 || defaultValue[0]==nullreturn "";
019                 else return defaultValue[0].ToString() ;
020             }
021             else
022             {
023                 return obj.ToString();
024             }
025         }
026         #endregion
027  
028         #region 根据是否为null或""返回long类型数据
029         /// <summary>         /// 根据是否为null或""返回long类型数据
030         /// </summary>         /// <param name="obj">要获取数据的对象
031         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回long.MinValue
032         /// <returns></returns>         public static long IsNull(this object obj, params long[] defaultValue)
033         {
034             if (obj == null || "".Equals(obj.ToString().Trim()))
035             {
036                 if (defaultValue.Length == 0) return long.MinValue;
037                 else return defaultValue[0];
038             }
039             else
040             {
041                 return long.Parse(obj.ToString());
042             }
043         }
044         #endregion
045  
046         #region 根据是否为null或""返回int类型数据
047         /// <summary>         /// 根据是否为null或""返回int类型数据
048         /// </summary>         /// <param name="obj">要获取数据的对象
049         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回int.MinValue
050         /// <returns></returns>         public static int IsNull(this object obj, params int[] defaultValue)
051         {
052             if (obj == null || "".Equals(obj.ToString().Trim()))
053             {
054                 if (defaultValue.Length == 0) return int.MinValue;
055                 else return defaultValue[0];
056             }
057             else
058             {
059                 return int.Parse(obj.ToString());
060             }
061         }
062         #endregion
063  
064         #region 根据是否为null或""返回DateTime类型数据
065         /// <summary>         /// 根据是否为null或""返回DateTime类型数据
066         /// </summary>         /// <param name="obj">要获取数据的对象
067         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回DateTime.MinValue
068         /// <returns></returns>         public static DateTime IsNull(this object obj, params DateTime[] defaultValue)
069         {
070             if (obj == null || "".Equals(obj.ToString().Trim()))
071             {
072                 if (defaultValue.Length == 0) return DateTime.MinValue;
073                 else return defaultValue[0];
074             }
075             else
076             {
077                 return DateTime.Parse(obj.ToString());
078             }
079         }
080         #endregion
081  
082         #region 根据是否为null或""返回double类型数据
083         /// <summary>         /// 根据是否为null或""返回double类型数据
084         /// </summary>         /// <param name="obj">要获取数据的对象
085         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回double.MinValue
086         /// <returns></returns>         public static double IsNull(this object obj, params double[] defaultValue)
087         {
088             if (obj == null || "".Equals(obj.ToString().Trim()))
089             {
090                 if (defaultValue.Length == 0) return double.MinValue;
091                 else return defaultValue[0];
092             }
093             else
094             {
095                 return double.Parse(obj.ToString());
096             }
097         }
098         #endregion
099  
100         #region 根据是否为null或""返回decimal类型数据
101         /// <summary>         /// 根据是否为null或""返回decimal类型数据
102  
103         /// </summary>         /// <param name="obj">要获取数据的对象
104         /// <param name="defaultValue">为null或""时返回的默认值,不指定则返回decimal.MinValue
105         /// <returns></returns>         public static decimal IsNull(this object obj, params decimal[] defaultValue)
106         {
107             if (obj == null || "".Equals(obj.ToString().Trim()))
108             {
109                 if (defaultValue.Length == 0) return decimal.MinValue;
110                 else return defaultValue[0];
111             }
112             else
113             {
114                 return decimal.Parse(obj.ToString());
115             }
116         }
117         #endregion
118     }
119 }

调用方法:

1 long L = "12312321".IsNull(long.MinValue);
2 Response.Write(L);

结果:

转自:http://blog.csdn.net/pukuimin1226/article/details/7931930

c#写扩展方法的更多相关文章

  1. C#语法糖之第四篇: 扩展方法

    今天继续分享C#4.0语法糖的扩展方法,这个方法也是我本人比较喜欢的方法.大家先想想比如我们以前写的原始类型不能满足现在的需求,而需要在该类型中添加新的方法来实现时大家会怎么做.我先说一下我没有学习到 ...

  2. C#语法糖: 扩展方法(常用)

    今天继续分享C#4.0语法糖的扩展方法,这个方法也是我本人比较喜欢的方法.大家先想想比如我们以前写的原始类型不能满足现在的需求,而需要在该类型中添加新的方法来实现时大家会怎么做.我先说一下我没有学习到 ...

  3. Asp.Net MVC以 JSON传值扩展方法

    Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...

  4. c#扩展方法的使用

    "扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型." 1.为什么会有扩展方法 你一定很疑问什么是扩展方法!什么 ...

  5. JavaScript学习总结(十四)——JavaScript编写类的扩展方法

    在​J​a​v​a​S​c​r​i​p​t​中​可以使​用​类的p​r​o​t​o​t​y​p​e属性来​扩​展​类的属​性​和​方​法,在实际开发当中,当JavaScript内置的那些类所提供的动态 ...

  6. Asp.Net MVC以JSON传值扩展方法

    Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...

  7. C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法

    1.自动属性(Auto-Implemented Properties) //以前的写法 .net2.0 private string _userName; public string UserName ...

  8. 给IConfiguration写一个GetAppSetting扩展方法

    给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config ...

  9. C#复习笔记(4)--C#3:革新写代码的方式(扩展方法)

    扩展方法 扩展方法有以下几个需求: 你想为一个类型添加一些 成员: 你不需要为类型的实例添加任何更多的数据: 你不能改变类型本身, 因为是别人的代码. 对于C#1和C#2中的静态方法,扩展方法是一种更 ...

随机推荐

  1. 美团针对Redis Rehash机制的探索和实践

    背景 Squirrel(松鼠)是美团技术团队基于Redis Cluster打造的缓存系统.经过不断的迭代研发,目前已形成一整套自动化运维体系,涵盖一键运维集群.细粒度的监控.支持自动扩缩容以及热点Ke ...

  2. DNS隧道工具iodine

    DNS隧道工具iodine   在受限制的网络中,如果DNS请求没有被限制,就可以通过DNS请求建立隧道而突破网络限制.iodine是Kali Linux提供的一款DNS隧道工具.该工具分为服务器端i ...

  3. ARM 内核

    ARM相关知识: ARM核:A8,ARM11,ARM9 指令架构:ARMv7,ARMv6,ARMv4 ARM核分为两个阵营: 经典型:ARM7,ARM9,ARM11 Cortex: Cortex A: ...

  4. ThinkPHP连接sqlserver,错误11001

    错误代码如下: :( 11001:[Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: 不知道这样的主机. 0:[Microsoft][ODB ...

  5. MyBatis -- generator 逆向工程

    一.引言 官网文档:http://www.mybatis.org/generator/index.html 通过使用官方提供的mapper自动生成工具,mybatis-generator-core-1 ...

  6. TYVJ 1463 智商问题 分块

    TYVJ 1463 智商问题 Time Limit: 1.5 Sec  Memory Limit: 512 MB 题目连接 http://www.tyvj.cn/p/1463 背景 各种数据结构帝~ ...

  7. ZOJ 1940 Dungeon Master 三维BFS

    Dungeon Master Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Desc ...

  8. 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”

    报错内容如下: 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Inte ...

  9. 修改WampServer的默认端口

    WampServer默认的安装端口是80,容易和已安装的ISS等其他服务冲突,导致WampServer无法启动. 无法启动的现象如下: 1.apache服务无法启动.问题所在:80端口冲突. 2.在浏 ...

  10. 在Hadoop中重写FileInputFormat类以处理二进制格式存储的整数

    近期開始使用MapReduce,发现网上大部分样例都是对文本数据进行处理的,也就是说在读取输入数据时直接使用默认的TextInputFormat进行处理就可以.对于文本数据处理,这个类还是能满足一部分 ...