📅  最后修改于: 2023-12-03 15:42:08.709000             🧑  作者: Mango
在 C# 中,声明数组或缓冲区时有两种不同的语法。使用托管数组时,排名说明符(数组的维数)需要在变量标识符后面声明。而对于固定大小的缓冲区,则需要在字段类型之前使用关键字 fixed
。
例如,声明一个三维的托管数组可以如下:
int[,,] myArray = new int[10, 5, 2];
这表示一个三维数组,其中第一维有 10 个元素,第二维有 5 个元素,第三维有 2 个元素。
如果要声明一个固定大小的缓冲区字段,可以使用以下语法:
unsafe struct MyStruct
{
public fixed int myBuffer[100];
}
注意这里需要在字段类型 int
之前使用关键字 fixed
,并且需要包含 unsafe
关键字。这意味着使用这个结构体时需要进行代码的非托管指针操作,因此需要特殊的授权。
如果使用托管数组时排名说明符位于变量标识符之前,会导致 C# 编译器抛出如下错误:
错误的数组声明符:要声明托管数组,排名说明符位于变量标识符之前.
如果需要声明一个固定大小的缓冲区字段却没有使用 fixed
关键字,也会导致编译器抛出错误:
要声明一个固定大小的缓冲区字段,请在字段类型之前使用 fixed 关键字.
因此,对于不同类型的数组或缓冲区声明方式,需要使用不同的语法规则,否则会导致编译器抛出错误。