Can I change an extension method into a property?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Does C# have extension properties?
我有以下几点:
1 2 3 4 5 6 7 | public static class EnumExt { public static string D2(this Enum key) { return Convert.ToInt32(key).ToString("D2"); } } |
我是这样使用的:
1 | PageType.ContentBlock.D2() |
其中pagetype是枚举。
有没有一种方法可以这样做,使得d2是一个属性而不是一个方法?对我来说,把()放在d2后面似乎没什么意义?
不,这就是它被称为扩展方法的原因。如果不需要其他参数(如
1 2 3 4 5 6 | int y = x.Add(3); public static int Add(this int source, int value) { return source + value; } |
此外,扩展方法只是"语法糖"。编译器将它们转换成一个普通的方法调用,并将源对象作为参数传递。
示例(扩展方法在类
1 | int y = x.Add(3); |
将转换为
1 | int y = ExtensionMethods.Add(x, 3); |
由编译器编写。
你有一个参数:
即使用法"看起来"是属性,也要提醒
1 | PageType.ContentBlock.D2(); |
等于
1 | EnumExt.D2(PageType.ContentBlock); |
所以,当需要参数时,使用…一个方法!
C是否具有扩展属性?