我将Ids的ArrayList存储在一个处理脚本中,该脚本要以逗号分隔的列表形式吐出,以输出到调试日志。有没有一种方法可以让我轻松地做到这一点而又无需遍历事物?
编辑:感谢Joel指出了.net 2.0及更高版本中可用的List(Of T)。如果可以的话,这使TONS更加容易。
我将Ids的ArrayList存储在一个处理脚本中,该脚本要以逗号分隔的列表形式吐出,以输出到调试日志。有没有一种方法可以让我轻松地做到这一点而又无需遍历事物?
编辑:感谢Joel指出了.net 2.0及更高版本中可用的List(Of T)。如果可以的话,这使TONS更加容易。
Answers:
是的,我正在回答自己的问题,但我在这里还没有找到它,并且认为这是一件相当棘手的事情:
...在VB.NET中:
String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))
...在C#中
string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))
唯一的“陷阱”是,如果您使用Option Strict来确保正确进行转换,则ArrayList必须将项目存储为字符串。
编辑:如果您使用的是.net 2.0或更高版本,只需创建一个List(Of String)类型的对象,就可以使用所需的对象。非常感谢Joel提出了这一建议!
String.Join(",", TargetList.ToArray())
到目前为止,所有解决方案都非常复杂。惯用的解决方案无疑应该是:
String.Join(",", x.Cast(Of String)().ToArray())
在新的框架版本中不需要花哨的杂技。假设不是一个很现代的版本,以下内容将是最简单的:
Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))
mspmsp的第二个解决方案也是一种不错的方法,但是由于错过了AddressOf
关键字,因此无法正常工作。同样,Convert.ToString
它效率很低(很多不必要的内部评估),并且Convert
该类的设计通常不是很干净。我倾向于避免使用它,尤其是因为它完全多余。
MS.VB.CS.Conversions.ToString
帮助程序函数,从而导致简单的ToString
调用。但是即使是这种方法,我也不会调用直接y(与通过VB cast运算符相反)。
这是一个简单的示例,演示了使用String.Join()从字符串列表中创建逗号分隔的字符串:
List<string> histList = new List<string>();
histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
histList.Add(Index.ToString());
/*arValue is array of Singles */
foreach (Single s in arValue)
{
histList.Add(s.ToString());
}
String HistLine = String.Join(",", histList.ToArray());