C# 编辑列表中的特定项
我想问一下如何编辑收藏中的项目。例如:在集合myList I(字符串名称、日期时间事件)中。我想把这次活动推迟到明年 我试过:C# 编辑列表中的特定项,c#,winforms,C#,Winforms,我想问一下如何编辑收藏中的项目。例如:在集合myList I(字符串名称、日期时间事件)中。我想把这次活动推迟到明年 我试过: public class ClassEvent { public string Name { get; set; } public DateTime Date { get; set; } public ClassEvent(string name, DateTime date) {
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);
}
但它不起作用。您不能在foreach循环中修改集合。用于循环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);
}
要更改集合中的现有项目,请执行以下操作:
// 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);
}
您正在foreach循环中创建一个新的ClassEvent,而不是编辑当前的ClassEvent。我会尝试:
forach( var a in MyClass.event)
{
if(a.MyEvent == DateTime.Today)
{
a.MyEvent.AddYears(1);
}
}
发布foreach循环中的
ClassEvent
定义枚举是不可变的,它们只能被读取。使用for循环代替。虽然你是正确的,但我认为OP需要编辑现有项,而不是添加新项