0

我可能缺少一些基本的东西,但是这种方法是怎么来的:

namespace System.Net
{
    public static class WebClientExtensions
    {        
        public static Task<byte[]> DownloadDataTask(this WebClient webClient, string address)
        {
            return DownloadDataTask(webClient, new Uri(address));
        }
    }
}

是这样调用的:

return new WebClient().DownloadDataTask(url)

这取自 ParallelExtensionsExtras Tour - #16 - Async Tasks for WebClient。

4

1 回答 1

1

这种方法称为扩展方法。它的区别在于this第一个参数前面有,您可以将其称为该参数的实例方法。

所以,你写的代码:

new WebClient().DownloadDataTask(url)

实际上与以下内容完全相同:

WebClientExtensions.DownloadDataTask(new WebClient(), url)

优点是它的语法更好。例如,几乎所有的 LINQ 也都基于扩展方法。

于 2013-01-19T15:03:51.567 回答