如何创建一个使用[]反对()进行初始化的类构造函数

时间:2012-07-24 18:03:08

标签: c# constructor buffer indexer

我正在寻找一种使用[]

初始化包含数组的类的方法

我的类包含一个私有数组和一个索引器,以便我可以使用[]获取和设置数组元素但是我希望将一个int传递给表示数组大小的构造函数,使用语法Buffer buf = new Buffer [4]但收到错误。

例如,我想用

设置我的缓冲区的大小
Buffer buf = new Buffer[4]

class Buffer
{
  private char[] buffer;

  public Buffer(int size)  // Constructor
  {
     buffer = new char[size];

     for ( int index = 0; index < size ; index++ )
     {
        buffer[index] = 'c';
     }

  }

  #region Methods

  public char this[int index]
  {
     get
     {
        return buffer[index];
     }
     set
     {
        buffer[index] = value;
     }
  }

  public void Display()
  {
     foreach (char pixel in buffer)
     {
        Console.Write("{0} ", pixel);
     }

     Console.Write("\n\n");
  }

  #endregion

}

2 个答案:

答案 0 :(得分:3)

您无法覆盖数组创建的语法(由于索引器,我认为您将构造函数混淆为new的一部分)。

只需使用您的构造函数:

Buffer buffer = new Buffer(4);
buffer[0] = 'a';

答案 1 :(得分:-1)

这是你能做的最好的事情:

Buffer b = new Buffer(new int[4]);

new-expression中的括号总是创建一个数组,没有例外。