在c#中,当类的列表被修改时,如何更新类的字段
本文关键字:何更新 更新 字段 列表 修改 | 更新日期: 2023-09-27 18:02:55
我理解这里的东西是值类型,而不是引用,所以当我更新列表时,字段_num不会被修改。但我的问题是如何更新字段_num当我修改包含它被修改的列表?
class Foo
{
public List<object> mylist;
private int _num;
public int num
{
get
{
return _num;
}
set
{
this._num = value;
mylist[0] = value;
}
}
public Foo()
{
mylist = new List<object>();
mylist.Add(_num);
}
}
class Program
{
static void Main(string[] args)
{
Foo my = new Foo();
my.num = 12;
my.mylist[0] = 5;
Console.WriteLine("" + my.mylist[0] + " " + my.num); ==> output is "5 12"
Console.ReadLine();
}
}
可以做哪些更改以使列表和字段同步?比如我的输出应该是" 55 "谢谢你的帮助!
这可能是你想要的,也可能不是…我仍然不确定是否需要按索引修改字段,但如果你真的想这样做,你考虑过为你的类型使用索引器吗?也就是说,索引器会像这样替换你的列表:
class Foo
{
public int num;
public string name;
public bool isIt;
public object this[int index]
{
get
{
switch(index)
{
case 0:
return num;
case 1:
return name;
case 2:
return isIt;
default:
throw new ArgumentOutOfRangeException();
}
}
set
{
switch(index)
{
case 0:
num = (int) value;
break;
case 1:
name = (string) value;
break;
case 2:
isIt = (bool) value;
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
}
那么你可以说:
var foo = new Foo();
foo.num = 13; // either works
foo[0] = 13; // either works