string.Join在List或其他类型上的使用

13 浏览
0 Comments

string.Join在List或其他类型上的使用

我想将一个整数数组或列表转换为以逗号分隔的字符串,像这样:

string myFunction(List a) {
    return string.Join(",", a);
}

但是string.Join只接受List作为第二个参数。有什么最好的方法可以做到这一点?

0
0 Comments

在.NET中,List类有一个.ToArray()方法。可以像这样使用:

string myFunction(List a)
{
    return string.Join(",", a.ToArray());
}

参考:List Methods (MSDN)

这个来自2010年的回答已经指出,当使用string.Join时,ToString是隐含的。

0
0 Comments

问题的原因是在.NET 4.0之前的版本中,没有现成的方法可以将List或其他类型的列表转换为以逗号分隔的字符串。在这种情况下,可以使用LINQ的Select方法和ToArray方法来实现相同的效果。

解决方法是使用LINQ的Select方法将列表中的每个元素转换为字符串,然后使用ToArray方法将其转换为数组。最后,使用String.Join方法将数组中的元素以逗号分隔的形式连接起来。

如果不能升级到.NET 4.0以上的版本,可以使用以下代码实现相同的效果:

return String.Join(",", a.Select(x => x.ToString()).ToArray());

该代码将列表a中的每个元素转换为字符串,并以逗号分隔的形式连接起来。

另外,使用LINQ的Select方法而不是List的内置ToArray方法的原因是,Select方法将List转换为IEnumerable,然后再转换为数组。这样可以确保在不升级到.NET 4.0的情况下也能实现相同的效果。

需要注意的是,这种解决方法也适用于其他方法,例如将列表中的元素转换为另一种类型的对象。

,如果在.NET 4.0之前的版本中需要将List或其他类型的列表转换为以逗号分隔的字符串,可以使用LINQ的Select方法和ToArray方法来实现。这种方法可以在不升级到.NET 4.0的情况下实现相同的效果。

0
0 Comments

在上述内容中,问题是关于在.NET 3.5中对List或其他类型使用string.Join的方法。问题的原因是.NET 3.5中没有提供用于直接将List或其他类型连接为字符串的内置方法。为了解决这个问题,作者使用了自定义的扩展方法来实现此功能。

解决方法是定义一个静态的StringExtensions类,并在其中创建一个静态的Join方法。该方法接受一个字符串参数和一个IEnumerable类型的列表参数。方法首先检查传入的参数是否为空,然后创建一个StringBuilder对象来拼接字符串。接下来,方法通过枚举器遍历列表中的元素,并将它们添加到StringBuilder中,使用传入的字符串参数作为分隔符。最后,将StringBuilder转换为字符串并返回。

上述代码示例展示了如何使用这个扩展方法。首先,创建一个包含整数的数组和一个List对象。然后,分别使用这两个对象调用Join方法,并将结果打印出来。

这种方法的优点是在连接大量元素时比使用String.Join(String, String[])方法更具可扩展性。它避免了创建一个完全由字符串数组组成的新数组的开销。此外,通过将Join方法定义为String的扩展方法,可以更方便地在链式扩展方法调用的最后调用它。

总之,这个问题的原因是在.NET 3.5中缺乏直接将List或其他类型连接为字符串的内置方法。为了解决这个问题,作者创建了一个自定义的扩展方法来实现此功能。这个方法通过遍历列表中的元素,并使用传入的字符串参数作为分隔符,将它们连接为一个字符串。这种方法比使用String.Join(String, String[])方法更具可扩展性,并且可以更方便地在扩展方法调用的最后调用。

0