簡體   English   中英

如何獲取屬性中的當前數組索引

[英]How to get current array index in property

嗨,我有兩個如下的課程。 在我們的應用程序中,我們不會將數據存儲在數組中,而是將數據存儲在單獨的大字符串中,我們將從那里讀取數據,但是在將值設置並獲取數組時,我需要索引,以便可以使用索引獲取子字符串。

public class ClassA
{
    private ClassB[] _classB;
    publc ClassB[] classB
    {
      get
      {
          return _classB;
      }
      set
      {
          _classB=value;
      }
  }

}

public class ClassB
{
  public int x;
}

如果我將任何值設置為classB

 classA.classB[10].x=1;

有什么辦法可以讓我在set屬性中設置當前索引,如10作為當前索引,還是我需要使用Indexes,請幫助我。

為什么不將屬性聲明設為只讀(只是一個“ get”),並添加Set方法:

public void SetValue( int idx, ClassB value )
   {
   classB[idx] = value;
   }

當然,在我的示例中沒有前提條件檢查,也沒有異常處理代碼,但是如果您需要了解set方法中的索引,則可以使用類似的方法。

為什么要在類中包裝一個簡單的int?

為何公開公開定長數組? 為什么不使用ArrayList或.NET庫中內置的其他集合之一?

如果出於其他原因根本沒有在示例中設置屬性,則在設置屬性時無法獲取索引。 您將獲得一個屬性值( classB數組),然后將對象的x字段設置在該數組的位置。

還有一些可能適合您的語法。 這取決於您的要求。 不幸的是,您的問題並未顯示出如何使用索引,因此無法知道您真正需要什么。

一種選擇是僅使一種方法起作用:

class ClassA
{
    public void SetItemXAt(int index, int value)
    {
        classB[index].x = value;
    }
}

然后,您可以使用index參數來完成所需的操作。

此主題的一種變體是在類型上實現indexer屬性:

class ClassA
{
    public int this[int index]
    {
        get { return classB[index].x; }
        set { classB[index].x = value; }
    }
}

同樣,您可以在此處隨意使用index參數。

如果以上兩種方法均無濟於事,則需要解決問題,以使您清楚自己實際想要做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM