2 回答

TA貢獻1842條經驗 獲得超13個贊
您可以使用另一個具有 Person 列表和返回 person 實例的索引器的類。
public class Program
{
public static void Main()
{
Persons pp=new Persons();
Person p=new Person() { id=1, Name="test"};
Person p1=new Person() { id=2, Name="test1"};
pp.PersonsList.Add(p);
pp.PersonsList.Add(p1);
pp[1]=new Person(){id=3,Name="tye"};
Console.WriteLine(pp[1].Name);
}
}
class Person
{
public int id {get;set;}
public string Name {get; set;}
}
class Persons
{
public Persons()
{
PersonsList=new List<Person>();
}
public List<Person> PersonsList {get;set;}
public Person this[int index]
{
get { return PersonsList[index]; }
set {
PersonsList[index].id=value.id;
PersonsList[index].Name=value.Name;
}
}
}

TA貢獻1821條經驗 獲得超6個贊
您可以返回一個中間類型。但是我不建議這樣做。您的“并行數組”方法通常表示缺少類型,并被視為代碼異味。我建議您創建一個具有 Id 和 name 屬性的類(或者可能是一個嚴格的,具體取決于您的用例)。并將該類的實例存儲在數組或其他集合類型中。
如果你采用中間方法,你可以做這樣的事情
struct PersonEntry
{
private readonly Person _person;
private readonly int _index;
public PersonEntry(Person person, int index)
{
_person = person;
_index = index;
}
public int Id
{
get => _person.id[ _index];
set => _person.id[ _index] = value;
}
public int Name
{
get => _person.Name[ _index];
set => _person.Name[ _index] = value;
}
}
PersonEntry this[int index]
{
get => new PersonEntry(this, index);
}
使用這種方法,您可以更改名稱和 ID。
我推薦的解決方案是:
class Person
{
public int Id {get; set;}
public string Name {get; set;}
}
Person[] persons;
- 2 回答
- 0 關注
- 178 瀏覽
添加回答
舉報