试图将Object[]数组转换为字符串数组
本文关键字:数组 转换 字符串 Object | 更新日期: 2023-09-27 17:50:17
我有一个方法接受一个ArrayList对象作为参数。
然后尝试将此arrayList转换为字符串数组,但得到InvalidCastException。
ArrayList包含7个随机数。因为它们是object类型,所以我认为将其转换为字符串应该没有问题。
这是我调用的方法
p.matches(winningNumber);
public void matches(ArrayList al)
{
try
{
string nameFile;
string[] winningNumber = (string[])al.ToArray(typeof(string));
Console.WriteLine("Please enter the name of the file you want to Read from");
nameFile = Console.ReadLine();
在尝试强制转换时,我得到了一个异常。
出现此异常是因为为了转换为字符串数组,元素本身也必须是字符串。你可以用LINQ来做:
string[] winningNumber = al.Cast<object>().Select(o => o.ToString()).ToArray();
处理null
s时,将o.ToString()
替换为""+o
或检查null
s的条件
您只需要使用Enumerable。在调用ToArray
之前转换string[] winningNumber = al.Cast<string>().ToArray();
变化
string[] winningNumber = (string[])al.ToArray(typeof(string));
string[] winningNumber = al.Cast<object>.Select(x=> x==null ? string.Empty : x.ToString()).ToArray();
如果你有一些不是字符串的项目,你可以使用Enumerable.OfType。它将忽略非字符串类型。
string[] winningNumber = al.OfType<string>().ToArray();
string[] winningNumber = al.Cast<object>.Select(x=>Convert.ToString(x)).ToArray();