[英]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.