如何在属性中获取当前数组索引

本文关键字:数组 索引 获取 属性 | 更新日期: 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 参数。

如果以上都无济于事,您需要解决问题,以便您清楚自己真正想做什么。