输出C#对象列表
我有
List events = new List(); for (int i = 0; i < 3000; i++) { if (i % 2 == 0) //is even { var dataStart = new { TimeId = startTime.AddSeconds(i), ValueStart = i }; } }
如何输出List对象中的内容? 我对C#很新,所以我试过了
for (int j = 0; j < events.Count; j++) { Console.WriteLine(events); }
但这不起作用。 关于正确输出对象值需要做什么的任何想法?
首先, 将创建的项添加到列表中 :
List events = new List (); for (int i = 0; i < 3000; i++) if (i % 2 == 0) {//is even events.Add( // <- Do not forget Add new { TimeId = startTime.AddSeconds(i), ValueStart = i } );
然后打印出列表
foreach(var item in events) if (!Object.ReferenceEquals(null, item)) Console.WriteLine("time: {0} value: {1}", item.TimeId, item.ValueStart);
你几乎就在那里,只需要通过索引访问元素(假设你在集合中有任何东西):
for (int j = 0; j < events.Count; j++) { Console.WriteLine(events[j].FooProperty); }
首先,你需要了解你有一个动态类型的List
(我不知道那是什么,也许你是本地的类文件)。 它被初始化为
List events = new List ();
现在,事件将包含一个dynamic
对象元素列表。
当您需要输出它时,您需要引用它。 你需要这样做
for (int j = 0; j < events.Count; j++) { Console.WriteLine(events[j].SomeProperty.ToString()); }
此代码将获取事件列表中每个dynamic
对象的一些属性,然后将其写入控制台。
两件事情:
-
您忘记将元素添加到列表中:
DateTime startTime = DateTime.Now; List
events = new List (); for (int i = 0; i < 3000; i++) { if (i % 2 == 0) //is even { var dataStart = new { TimeId = startTime.AddSeconds(i), ValueStart = i }; events.Add(dataStart); // <-- } } -
只需使用
foreach
写入控制台,如下所示:foreach (var dataPoint in events) { Console.WriteLine(dataPoint); }
编辑:由于我输掉了比赛,我不妨提出一个更有趣的方式来做到这一点:(这也有向后兼容C#2的奖励,而dynamic
只存在于C#4上。)
public static IEnumerable
你会这样称呼它:
DateTime startTime = DateTime.Now; foreach (var dataPoint in GetEvents(startTime)) { Console.WriteLine(dataPoint); }
更多关于yield return
的答案 ,Jon Skeet。