亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類索引器設計以訪問類中的所有數組

類索引器設計以訪問類中的所有數組

C#
飲歌長嘯 2022-01-09 16:14:39
我有一個需要存儲值列表的場景,例如:id、姓名、部門、手機號碼等我目前使用的方法是存儲在 DataTable 中,通過行號訪問并進行修改。有沒有辦法可以創建一個包含所有這些屬性并通過索引器訪問的類?像下面這樣的東西class Person{  public int[] id{get;set;}  public string[] Name{get; set;}  //your suggestion for indexer is required here  public <some type> this[int index]  {   //get/set logic to retrieve/modify a users input ->so that the following is achieved   //some thing like Person P=new Person(); now I should be able to do modifications like P[0].Name="New Name" or should retrieve data like P[0].Name,P[0].Id could be done  }    }注意:所有數組都將具有相同的長度。
查看完整描述

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;

         }

   }

 }


查看完整回答
反對 回復 2022-01-09
?
達令說

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;


查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 178 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號