C# 如何创建使用[]而不是()进行初始化的类构造函数
我正在寻找一种使用[]初始化包含数组的类的方法 我的类包含一个私有数组和一个索引器,因此我可以使用[]获取和设置数组元素,但是我希望使用语法Buffer buf=new Buffer[4]将一个int传递给表示数组大小的构造函数,但会收到错误 例如,我想用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]
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]);
新表达式中的括号总是创建一个数组,没有例外。谢谢,我将以这种方式创建我的缓冲区。我想知道是否可以像数组一样使用我的类,尽管在这种情况下,我对这个缓冲区有未来的计划似乎毫无意义。