C# 如何创建使用[]而不是()进行初始化的类构造函数

C# 如何创建使用[]而不是()进行初始化的类构造函数,c#,constructor,buffer,indexer,C#,Constructor,Buffer,Indexer,我正在寻找一种使用[]初始化包含数组的类的方法 我的类包含一个私有数组和一个索引器,因此我可以使用[]获取和设置数组元素,但是我希望使用语法Buffer buf=new Buffer[4]将一个int传递给表示数组大小的构造函数,但会收到错误 例如,我想用 Buffer buf = new Buffer[4] class Buffer { private char[] buffer; public Buffer(int size) // Constructor { b

我正在寻找一种使用[]初始化包含数组的类的方法

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

例如,我想用

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

}

您不能重写数组创建的语法,我相信由于索引器,您已经将构造函数混淆为new的一部分

只需使用构造函数:

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

这是您所能做的最好的:

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

新表达式中的括号总是创建一个数组,没有例外。

谢谢,我将以这种方式创建我的缓冲区。我想知道是否可以像数组一样使用我的类,尽管在这种情况下,我对这个缓冲区有未来的计划似乎毫无意义。