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);