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

时间:2014-12-01 06:57:29

标签: c# .net

您好我有两节课如下。在我们的应用程序中,我们不会将数据存储在我们将存储在单独的大字符串中的数组中,我们将从那里读取但是在设置并获取数组的值时我需要索引以便我可以使用索引获取子字符串

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,如当前索引,或者我需要使用索引请帮帮我。

2 个答案:

答案 0 :(得分:0)

为什么不将属性声明设为只读(只是" get"),并添加一个Set方法:

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

当然,我的例子中没有前置条件检查和异常处理代码,但是如果你需要知道set方法中的索引,我就会这样做。

为什么要在类中包装一个简单的int?

为什么公开展示固定长度的数组?为什么不使用ArrayList或.NET库中内置的其他集合之一?

答案 1 :(得分:0)

在设置属性时无法获取索引,除非您没有在示例中设置属性。您获取属性值(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参数可供您在此处使用。

如果以上都没有帮助,您需要解决问题,以便明确了解您的确实想做什么。