如何在属性中获取当前数组索引
本文关键字:数组 索引 获取 属性 | 更新日期: 2023-09-27 18:32:30
嗨,我有两个类,如下所示。 在我们的应用程序中,我们不会将数据存储在数组中,我们将
存储在一个单独的大字符串中,我们将从那里读取,但是在设置值并将其获取数组时,我需要索引,以便我可以使用索引获取子字符串。
public class ClassA
{
private ClassB[] _classB;
publc ClassB[] classB
{
get
{
return _classB;
}
set
{
_classB=value;
}
}
}
public class ClassB
{
public int x;
}
如果我将任何值设置为类 B 例如
classA.classB[10].x=1;
有什么方法可以让在 set 属性(如 10)中将当前索引设置为当前索引,或者我需要使用索引,请帮助我。
为什么不使属性声明只读(只是一个"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
参数来处理所需的内容。
此主题的变体是在以下类型上实现索引器属性:
class ClassA
{
public int this[int index]
{
get { return classB[index].x; }
set { classB[index].x = value; }
}
}
同样,您可以在此处根据需要使用 index
参数。
如果以上都无济于事,您需要解决问题,以便您清楚自己真正想做什么。