英文:
Add new property to existing object - c#
问题
当两个 if
条件都满足时,我想将 Start
与值和时间一起添加到相同的 DataList
中。
public List<object> DataList = new List<object>();
if(某些条件)
{
DataList.Add(new { Value = Value, Time = time}); // 假设这是 DataList[0]
//var start = null;
//DataList.Add(new { Value = Value, Time = time, Start = start});
}
if(某些条件)
{
-> 我应该如何在这里将 `start` 添加到 DataList[0] 中。
//DataList.Add(new { Start = start });
//DataList[0]?.Start = start;
}
稍后,当我使用 DataList 时,它应该包含来自两个 if
条件的值。谢谢。
英文:
When both 'if' condition is satisfied, I want Start
to be added to the same DataList
along with value and time.
public List<object> DataList = new List<object>();
if(somecondition)
{
DataList.Add(new { Value = Value, Time = time}); // assume this is DataList[0]
//var start = null;
//DataList.Add(new { Value = Value, Time = time, Start = start});
}
if(somecondition)
{
-> how do I add `start` to DataList[0] here.
//DataList.Add(new { Start = start });
//DataList[0]?.Start = start;
}
Later, when I use DataList, it should contain values from both if
condition. Thank you.
答案1
得分: 1
这里有两个选择。
使用继承:
void 方法()
{
/* 初始化变量 */
if (某条件)
{
数据列表.Add(new 数据() { 值 = 值, 时间 = 时间 });
}
else if (另一条件)
{
数据列表.Add(new 带起始的数据() { 值 = 值, 时间 = 时间, 起始 = 起始 });
}
}
public List<数据> 数据列表 = new List<数据>();
public class 数据
{
public string 值;
public string 时间;
}
public class 带起始的数据 : 数据
{
public string 起始;
}
或者,使用 ExpandoObject
:
void 方法()
{
/* 初始化变量 */
dynamic 数据 = new System.Dynamic.ExpandoObject();
if (某条件)
{
数据.值 = 值;
数据.时间 = 时间;
}
if (另一条件)
{
数据.起始 = 起始;
}
数据列表.Add(数据);
}
public List<System.Dynamic.ExpandoObject> 数据列表 = new List<System.Dynamic.ExpandoObject>();
英文:
Here are two options.
Use inheritance:
void Method()
{
/* init variables */
if (someCondition)
{
DataList.Add(new Data() { Value = Value, Time = time });
}
else if (someOtherCondition)
{
DataList.Add(new DataWithStart() { Value = Value, Time = time, Start = start });
}
}
public List<Data> DataList = new List<Data>();
public class Data
{
public string Value;
public string Time;
}
public class DataWithStart : Data
{
public string Start;
}
Or, use ExpandoObject
:
void Method()
{
/* init variables */
dynamic data = new System.Dynamic.ExpandoObject();
if (someCondition)
{
data.Value = Value;
data.Time = time;
}
if (someOtherCondition)
{
data.Start = start;
}
DataList.Add(data);
}
public List<System.Dynamic.ExpandoObject> DataList = new List<System.Dynamic.ExpandoObject>();
答案2
得分: 0
使用System.Collections.Generic和System.Dynamic;
List
dynamic data1 = new ExpandoObject();
如果 (某些条件)
{
data1.Value = Value;
data1.Time = time;
}
如果 (某些条件)
{
data1.Start = start;
}
DataList.Add(data1);
你可以用ExpandoObject
以最简单的方式解决。
英文:
using System.Collections.Generic;
using System.Dynamic;
List<dynamic> DataList = new List<dynamic>();
dynamic data1 = new ExpandoObject();
if (someCondition)
{
data1.Value = Value;
data1.Time = time;
}
if (someCondition)
{
data1.Start = start;
}
DataList.Add(data1);
you can use ExpandoObject
to solve in simplest way.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论