string.Join()in .net 3.5

Pro*_*aos 11 c#

我在VS2008一个.NET 3.5项目,我试图用这个过载string.Join()(就是那个需要stringIEnumerable<T>)和编译器似乎并不知道这个过载.

这是我试过的代码

    var result = string.Join(" ", Foo());
Run Code Online (Sandbox Code Playgroud)

这里Foo()

    IEnumerable<string> Foo()
    {

        foreach(string s in new []{"1", "2", "3"} )
        {
            yield return s;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我明白了

> Error 2   Argument '2': cannot convert from
> 'System.Collections.Generic.IEnumerable<string>' to 'string[]'
Run Code Online (Sandbox Code Playgroud)

当然,如果我使用Foo().ToArray()它有效,但我想知道为什么过载IEnumerable<T>不起作用.

经典视图中的MSDN表示它与vs2008/.net 3.5兼容

在此输入图像描述

(我在非经典视图中找不到"此页面特定于......"的消息,所以我想我会设置一个屏幕截图.)

Ant*_*ram 15

所述string.Join过载接受IEnumerable<T>未添加直到.NET 4它不是在.net 3.5可用.MSDN文档中的经典视图完全不正确.

在.NET 3.5中,你将需要调用ToArray()IEnumerable<string>,以将其传递到Join方法.

string.Join(" ", Foo().ToArray()); 
Run Code Online (Sandbox Code Playgroud)

作为参考,这些是 .NET 3.5支持的重载.


Joe*_*oey 7

底部的版本信息说明了不同之处:

MSDN上的版本信息

请注意,您可以在文章底部找到该版本信息,无论选择的视图如何(它可能看起来有点不同).

您找到的右上角的注释是指您可以在URL中找到的所选资源版本,例如:

http://msdn.microsoft.com/en-us/library/dd783876(VS.90).aspx

(以粗体突出显示).通常这也会选择框架版本(因为这些版本与VS一起发布),但显然这里的分类似乎存在错误.

我只是把它报告为错误.