无法使用对象获取结果
本文关键字:获取 结果 对象 | 更新日期: 2023-09-27 18:02:06
public object My()
{
List<string> mystring = new List<string>();
mystring.Add("aaaa");
mystring.Add("bbb");
return mystring;
}
In Main
Program p1 = new Program();
object test = p1.My();
Console.WriteLine(test);
即使转换为Tolist()
,我也得到System.Collection.Generic.List
如何将结果转换为列表并显示所有元素?
您需要将对象(测试)强制转换回List<string>
,然后遍历List<string>
中的所有元素以打印它们。
试试这个:
Program p1 = new Program();
object test= p1.My();
List<string> lst = (List<string>) test;
foreach(string item in lst)
Console.WriteLine(item);
这个答案适用于不知道List
将返回的类型的情况。因此,如果你不知道类型,但是你知道会有某种类型的List
返回,并且你想要访问List
的功能,你可以将结果强制转换为IList
接口,你的程序不会关心List
专门化的类型泛型。
Program p1 = new Program();
var test = p1.My();
var lst = (IList) test;
foreach (var item in lst)
Console.WriteLine(item);
来自WriteLine
方法文档(这里)
如果value为null,则只写入行结束符。否则,调用value的ToString方法来生成它的字符串表示,并将结果字符串写入标准输出流。
正如文档所说,List<string>
的ToString方法与WriteLine
方法一起调用。
ToString
的默认行为是返回实例类型的字符串表示。(这里)
ToString方法的默认实现返回完整的对象类型的限定名,如下例所示所示。
为了打印出列表的内容,你需要将方法的返回类型更改为IEnumerable<string>
,例如使用string
的Join
方法。看到这个:
public static IEnumerable<string> My()
{
var mystring = new List<string>();
mystring.Add("aaaa");
mystring.Add("bbb");
return mystring;
}
private static void Main(string[] args)
{
var test = My();
Console.WriteLine(string.Join(",", test.ToArray()));
Console.WriteLine("Press any key to continue.");
Console.ReadLine();
}