C# 请给我解释一下扩展方法

C# 请给我解释一下扩展方法,c#,vb.net,extension-methods,C#,Vb.net,Extension Methods,我刚看了这个帖子: 我从来没有听说过扩展方法。它们适用于每种语言吗 他们的目的是什么?在那篇文章中,我不理解这个例子。不,它们并不适用于每种语言。它们是一种特定于语言的特性,由C#和Visual Basic提供(我不知道其他语言可能已经采用了它们) 它们的要点是为在类或接口上调用实用程序方法提供一种方便的语法。在C#2中,将通过静态类调用实用程序方法,以正常方式传递参数: IEnumerable<string> someStrings; int count = EnumerableH

我刚看了这个帖子:

我从来没有听说过扩展方法。它们适用于每种语言吗


他们的目的是什么?在那篇文章中,我不理解这个例子。

不,它们并不适用于每种语言。它们是一种特定于语言的特性,由C#和Visual Basic提供(我不知道其他语言可能已经采用了它们)

它们的要点是为在类或接口上调用实用程序方法提供一种方便的语法。在C#2中,将通过静态类调用实用程序方法,以正常方式传递参数:

IEnumerable<string> someStrings;
int count = EnumerableHelpers.Count(someStrings);
即使Count()不是
IEnumerable
接口的成员。因此,扩展方法可以让您向不受控制的类或接口添加成员。

它们可供C#和VB使用。它们允许您模拟向不受您控制的类添加方法

例如,您可以向字符串添加一个方法

所以不是

MyStringUtils.WordCount(“一些字符串”)

你可以只写一些字符串。WordCount()

这是严格意义上的“语法糖”,有助于提高可读性。实际上,您正在创建一个静态方法,该方法将在目标类型的IntelliSense中显示

它们适用于每种语言吗

不,但有些语言具有相同的功能,尽管不一定使用相同的名称。我知道的是和,其中的功能称为“类别”。

请参见
int count = someStrings.Count();
public static class MyExtensions
{
    public static int WordCount(this String str)
    {
        return MyStringUtils.WordCount( str );
    }
}