• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# 扩展方法集

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

语法注意点

  • 可以使用扩展方法来扩展类或接口。
  • 不能重写扩展方法。
  • 扩展方法只能在非嵌套、非泛型静态类内部定义。
  • 扩展方法必须定义在静态类中。
  • 扩展方法的第一个参数的类型用于指定被扩展的类型,它限制该扩展方法只能作用于该类型。
  • 扩展方法的第一个参数必须带有 "this" 修饰符。
  • 调用方必须引入扩展方法的命名空间。
  • 调用扩展方法的语法,与调用 "被扩展的类型上的实例方法" 的语法相同。
  • 调用扩展方法时,无需传递第一个参数,因为该参数仅用于指定被扩展的类型。
  • 扩展方法是一种特殊的静态方法,其调用方式与调用被扩展类型上的实例方法语法相同。
  • 仅当使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。

 

Humanizer(人性化)

Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities

 

string

// Return a string describing the value as a file size.
// For example, 1.23 MB.
public static string ToFileSize(this double value)
{
    string[] suffixes = { "bytes", "KB", "MB", "GB",
        "TB", "PB", "EB", "ZB", "YB"};
    for (int i = 0; i < suffixes.Length; i++)
    {
        if (value <= (Math.Pow(1024, i + 1)))
        {
            return ThreeNonZeroDigits(value /
                Math.Pow(1024, i)) +
                " " + suffixes[i];
        }
    }

    return ThreeNonZeroDigits(value /
        Math.Pow(1024, suffixes.Length - 1)) + 
        " " + suffixes[suffixes.Length - 1];
}
 
// Return the value formatted to include at most three
// non-zero digits and at most two digits after the
// decimal point. Examples:
//         1
//       123
//        12.3
//         1.23
//         0.12
private static string ThreeNonZeroDigits(double value)
{
    if (value >= 100)
    {
        // No digits after the decimal.
        return value.ToString("0,0");
    }
    else if (value >= 10)
    {
        // One digit after the decimal.
        return value.ToString("0.0");
    }
    else
    {
        // Two digits after the decimal.
        return value.ToString("0.00");
    }
}

 

参考资料

扩展方法 (C# 编程指南) (Entrance on MSDN)
http://msdn.microsoft.com/zh-CN/library/bb383977
http://msdn.microsoft.com/zh-cn/magazine/cc163317.aspx

c# 扩展方法奇思妙用
http://www.cnblogs.com/ldp615/archive/2009/08/07/1541404.html

Conversion rules for Instance parameters and their impact
http://blogs.msdn.com/b/sreekarc/archive/2007/10/11/consequences-of-conversion-rules-for-instance-parameters.aspx

Extension methods Interoperability between languages
http://blogs.msdn.com/b/sreekarc/archive/2007/10/11/extension-methods-interoperability-between-languages.aspx

开源扩展项目
http://dnpextensions.codeplex.com/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#+ArcEngine常用方法(不定时更新)发布时间:2022-07-10
下一篇:
C# 线程池的使用 终止线程池中的队列发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap