C# 我可以将扩展方法更改为属性吗?
可能重复:C# 我可以将扩展方法更改为属性吗?,c#,C#,可能重复: 我有以下资料: public static class EnumExt { public static string D2(this Enum key) { return Convert.ToInt32(key).ToString("D2"); } } 我是这样使用的: PageType.ContentBlock.D2() 其中PageType是一个枚举 有没有办法让D2成为一个属性而不是
我有以下资料:
public static class EnumExt
{
public static string D2(this Enum key)
{
return Convert.ToInt32(key).ToString("D2");
}
}
我是这样使用的:
PageType.ContentBlock.D2()
其中PageType是一个枚举
有没有办法让D2成为一个属性而不是一个方法?对我来说,总是在D2后面加()似乎没有多大意义?好吧,你有一个参数:
这个枚举键
即使用法“看起来”像一个属性,也要提醒
PageType.ContentBlock.D2();
相当于
EnumExt.D2(PageType.ContentBlock);
因此,当您需要参数时,请使用。。。一种方法
不,这就是为什么它被称为扩展方法。如果不需要其他参数(如
var x=y.ExtensionMethod();
),它可能看起来可以转换为属性,但扩展方法可以使用其他参数。例如:
int y = x.Add(3);
public static int Add(this int source, int value)
{
return source + value;
}
而且,扩展方法只是“语法糖”。编译器将它们转换为普通的方法调用,并将源对象作为参数传递
示例(扩展方法在类ExtensionMethods
中):
将转换为
int y = ExtensionMethods.Add(x, 3);
通过编译器。我已经找到了这个问题的答案,我发现答案是否定的。我希望我错了,有办法。不,你不能。此时此刻,C#将无法支持您的要求。因此,您之所以提出此要求,只是因为您不必费心添加括号?不管你是如何考虑使用VB.Net的,你都可以用它来节省不少字符!(脸掌)
int y = ExtensionMethods.Add(x, 3);