C# 无法使用对象获取结果
即使转换为C# 无法使用对象获取结果,c#,.net,C#,.net,即使转换为Tolist()我也会得到System.Collection.Generic.List 如何将结果转换为列表并显示所有元素?您需要将对象(测试)转换回List,然后迭代List中的所有元素以打印它们 试试这个: Program p1 = new Program(); object test = p1.My(); Console.WriteLine(test); 程序p1=新程序(); 对象测试=p1.My(); 列表lst=(列表)测试; foreach(lst中的字符串项)
Tolist()
我也会得到System.Collection.Generic.List
如何将结果转换为列表并显示所有元素?您需要将对象(测试)转换回
List
,然后迭代List
中的所有元素以打印它们
试试这个:
Program p1 = new Program();
object test = p1.My();
Console.WriteLine(test);
程序p1=新程序();
对象测试=p1.My();
列表lst=(列表)测试;
foreach(lst中的字符串项)
控制台写入线(项目);
此答案适用于如果您不知道列表将返回的类型。因此,如果您不知道类型,但您知道将返回某种类型的List
,并且您希望访问List
功能,您可以将结果强制转换到IList
界面,您的程序将不关心哪种类型的genericList
Program p1 = new Program();
object test= p1.My();
List<string> lst = (List<string>) test;
foreach(string item in lst)
Console.WriteLine(item);
从WriteLine
方法文档()
如果值为null,则只写入行终止符。否则
调用值的ToString方法以生成其字符串
表示,并将结果字符串写入标准
输出流
正如文档所述,List
的ToString方法是通过WriteLine
方法调用的
而ToString
的默认行为是返回实例类型的字符串表示。()
ToString方法的默认实现返回完整的
对象类型的限定名称,如下例所示
表演
为了打印列表的内容,您需要将方法的返回类型更改为IEnumerable
,例如,使用string
的Join
方法。见此:
Program p1 = new Program();
var test = p1.My();
var lst = (IList) test;
foreach (var item in lst)
Console.WriteLine(item);
公共静态IEnumerable My()
{
var mystring=新列表();
mystring.Add(“aaaa”);
mystring.Add(“bbb”);
返回mystring;
}
私有静态void Main(字符串[]args)
{
var test=My();
WriteLine(string.Join(“,”,test.ToArray());
Console.WriteLine(“按任意键继续”);
Console.ReadLine();
}
如果我想动态执行,但不知道返回类型?你的意思是说如果列表类型未知,如何强制转换对象,对吗?@Neo如果你不知道列表的类型,你可以将其强制转换到IList
界面。你为什么要返回对象
?实际上它是一个伪代码,实际上,我的代码是由动态生成的,我正在使用Roslyn执行它,我希望根据大小写返回字符串、列表等。
Program p1 = new Program();
var test = p1.My();
var lst = (IList) test;
foreach (var item in lst)
Console.WriteLine(item);
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();
}