我想问一下如何编辑集合中的项目。例如:在集合myList I(字符串名称,DateTime事件)中。我想把活动搬到明年。
我试过了:
public class ClassEvent
{
public string Name { get; set; }
public DateTime Date { get; set; }
public ClassEvent(string name, DateTime date)
{
Name = name;
Date = date;
}
MYCLASS:
public List<ClassEvent> event= new List<ClassEvent>();
public void AddEvent(string name, DateTime MyEvent)
{
ClassEvent ev = new ClassEvent(name, MyEvent.Date);
event.Add(ev);
}
的MainForm:
forach( var a in MyClass.event)
{
if(a.MyEvent == DateTime.Today)
{
Myclass.AddEvent(a.name, a.MyEvent.AddYears(1);
}
但它不起作用。
答案 0 :(得分:1)
您正在foreach循环中创建一个新的ClassEvent,而不是编辑您正在使用的那个。我会尝试:
forach( var a in MyClass.event)
{
if(a.MyEvent == DateTime.Today)
{
a.MyEvent.AddYears(1);
}
}
答案 1 :(得分:0)
您无法在 foreach 循环中修改集合。使用 for loop isntead:
将 添加 新项目添加到集合中:
// Pay attention: backward loop
for(int i = MyClass.event.Count - 1; i >= 0; --i) {
ClassEvent a = MyClass.event[i];
if (a.MyEvent == DateTime.Today)
Myclass.AddEvent(a.name, a.MyEvent.AddYears(1);
}
更改 集合中的现有项目:
// Any direction forward/backward will do
for(int i = MyClass.event.Count - 1; i >= 0; --i) {
ClassEvent a = MyClass.event[i];
// Just change "a", since "a" is a item in the collection already
//TODO: Check the syntax; "MyEvent" is expected being a writeable property
if (a.MyEvent == DateTime.Today)
a.MyEvent = a.MyEvent.AddYears(1);
}