c#的Extension Method功能

时间:2014-08-27 16:00:37   收藏:0   阅读:137

要在C#中使用类型的拓展方法,可在一个类中中通过指定static的方法,将Type通过this方式作为第一个参数传入,如给Random增加一个NextFloat方法

    public static class Extension
    {
        public static byte[] NextBytes(this Random r, int length)
        {
            var data = new byte[length];
            r.NextBytes(data);
            return data;
        }

        public static float NextFloat(this Random r, int length)
        {
            return BitConverter.ToSingle(NextBytes(r, 4), 0);
        }
    }

如果拓展的函数和原函数重名的话,则在类以外不产生效果。如上述的NextBytes在Extension外是不生效的。

要实现该效果,有三点要求:

1. 声明该拓展方法的Class必须是static、non-generic和non-nested的

2. 拓展方法必须是static

3. 类型的传入参数必须位于第一个,且以this标明

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!