加入列表和单个字符串

c#

为什么这个输入:

var list = new List<string>()
{
    "a","b","c"
};

var out1 = string.Join(", ", list.Select(t => t));
var out2 = string.Join(", ", list.Select(t => t), "d");

Console.WriteLine("out1 = " + out1);
Console.WriteLine("out2 = " + out2);

给出输出:

out1 = a, b, c
out2 = System.Linq.Enumerable+WhereSelectListIterator`2[System.String,System.String], d

我不明白为什么我得到:

System.Linq.Enumerable+WhereSelectListIterator`2[System.String,System.String]

out2。有任何想法吗?

回答

你的第二个例子是调用这个重载:

public static string Join(string? separator, params object?[] values);

所以你的第二个和第三个参数作为object[]这里传递:

var out2 = string.Join(", ", list.Select(t => t), "d");

string.Join在内部调用ToString()数组中的每个项目,因此输出。


如果要将单个字符串附加到列表中,可以使用Enumerable.Append

var out2 = string.Join(", ", list.Append("d"));

这将称为此重载:

public static string Join(
    string? separator, System.Collections.Generic.IEnumerable<string?> values);


以上是加入列表和单个字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>