扩展方法略好于帮助方法
2018-06-17 20:11:01来源:未知 阅读 ()
如果针对一个类型实例的代码片段经常被用到,我们可能会想到把之封装成帮助方法。如下是一段针对DateTime
类型实例的一段代码:
class Program
{static void Main(string[] args){DateTime d = new DateTime(2001,5,18);
switch (d.DayOfWeek)
{case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
DoWeekendThing();break;
default:
DoWeekDayThing();break;
}Console.ReadKey();}static void DoWeekendThing(){Console.WriteLine("周末好好休息放松心情");
}static void DoWeekDayThing(){Console.WriteLine("认真工作");
}}
以上,把判断是否是周末的代码片段封装到帮助类、帮助方法中如下:
public static class DateTimeHelper{public static bool IsWeekend(DateTime dateTime){switch (dateTime.DayOfWeek)
{case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
return true;default:
return false;}}}
在客户端:
class Program
{static void Main(string[] args){DateTime d = new DateTime(2001,5,18);
if (DateTimeHelper.IsWeekend(d))
{DoWeekendThing();}else
{DoWeekDayThing();}Console.ReadKey();}static void DoWeekendThing(){Console.WriteLine("周末好好休息放松心情");
}static void DoWeekDayThing(){Console.WriteLine("认真工作");
}}
用帮助类、帮助方法固然好,因为进行了很好的封装,但每次都必须要记住扩展方法在DateTimeHelper
这个扩展类中。如果System.DateTime
包括IsWeekend
方法会更好!
扩展方法是一种特殊的静态方法,可以让编写的方法像现有类型的实例方法一样被使用。
public static class DateTimeExtensions{public static bool IsWeekend(this DateTime dateTime){switch (dateTime.DayOfWeek)
{case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
return true;default:
return false;}}}
○ 扩展方法必须在静态类中
○ 扩展方法必须是静态方法
○ 扩展方法的第一个参数必须是需要被扩展的类型,而且前面必须加this
关键字
客户端修改为:
class Program
{static void Main(string[] args){DateTime d = new DateTime(2001,5,18);
if (d.IsWeekend())
{DoWeekendThing();}else
{DoWeekDayThing();}Console.ReadKey();}static void DoWeekendThing(){Console.WriteLine("周末好好休息放松心情");
}static void DoWeekDayThing(){Console.WriteLine("认真工作");
}}
总结:扩展方法貌似略好于帮助方法,可以作为类型实例的方法直接被调用。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:.NET基础之深度复制和浅度复制
下一篇:C#:获取视频某一帧的缩略图
- Delphi 调用C# 编写的DLL方法 2019-10-28
- PHP保留两位小数的几种方法 2019-08-16
- 委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lamb 2018-06-21
- MVC学习一:EF 2018-06-21
- extern外部方法使用C#简单例子 2018-06-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash