【发布时间】:2018-02-26 10:53:19
【问题描述】:
我正在尝试创建一种将任何 IEnumerable 转换为字符串(包括数组)的方法。
当我尝试将转换为 IEnumerable(非泛型)的数组传递给 string.Join 时,它只返回 1 个值作为结果。 IEnumerable 由各种类组成,这些类派生自一个共同的祖先,并将其 7 项正确传递给方法:
var list = new List<SportEvent>
var array = new SportEvent[]
{
new SportMatch(),
new SportMatch(),
new SportMatchBase(),
new SportMatch(),
new SportEvent(),
new SportEvent(),
new SportEvent(),
};
bool isImplementingIEnumerable = list is IEnumerable;
if (isImplementingIEnumerable)
{
valueRepresentation = string.Join(", ", (IEnumerable)array);
}
我将此代码用作概念证明。我会将各种集合传递给该方法,我只是在使用代码进行测试。因此,我不想绑定到单个类型。我将使用 StringBuilder 手动附加值。
问题是:为什么 string.Join(string pattern, IEnumerable collection) 只返回 1 个值?
【问题讨论】:
-
returns only 1 value- 值是多少?你在期待什么? -
您能否详细说明您正在尝试做的事情,即预期结果?
-
如果您从未填写或使用过
list is IEnumerable,那么测试它的意义何在? -
你正在传递一个
SportEvent[]-string.join期待一个string[] -
所以如果
list是IEnumerable你在array上调用string.Join- 只有我会被这个混淆吗?
标签: c# arrays string ienumerable