我有
List<dynamic> events = new List<dynamic>();
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);
}
但这不起作用。关于正确输出对象值需要做什么的任何想法?
答案 0 :(得分:2)
首先, 将 创建的项目添加到列表中:
List<dynamic> events = new List<dynamic>();
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);
答案 1 :(得分:1)
你快到了,只需要通过索引访问元素(假设你在集合中有任何东西):
for (int j = 0; j < events.Count; j++)
{
Console.WriteLine(events[j].FooProperty);
}
答案 2 :(得分:0)
首先,您需要了解自己拥有List
动态类型(我不知道那是什么,也许您是本地类文件)。它被初始化为
List<dynamic> events = new List<dynamic>();
现在,事件将包含一个列为dynamic
个对象的元素。
当您需要输出它时,您需要引用它。你需要这样做
for (int j = 0; j < events.Count; j++)
{
Console.WriteLine(events[j].SomeProperty.ToString());
}
此代码将获取事件列表中每个dynamic
对象的一些属性,然后将其写入控制台。
答案 3 :(得分:0)
两件事:
您忘了将元素添加到列表中:
DateTime startTime = DateTime.Now;
List<dynamic> events = new List<dynamic>();
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);
}
dynamic
只存在于C#4上。)
public static IEnumerable<object> GetEvents(DateTime startTime)
{
for (int i = 0; i < 3000; i++)
{
if (i % 2 == 0) //is even
{
yield return new
{
TimeId = startTime.AddSeconds(i),
ValueStart = i
};
}
}
}
你会这样称呼:
DateTime startTime = DateTime.Now;
foreach (var dataPoint in GetEvents(startTime))
{
Console.WriteLine(dataPoint);
}
Jon Skeet在this answer的yield return
更多信息。