假设我想要一个值类型为7字节(或3或777)。
我可以这样定义:
public struct Buffer71
{
public byte b0;
public byte b1;
public byte b2;
public byte b3;
public byte b4;
public byte b5;
public byte b6;
}
更简单的定义方法是使用固定缓冲区
public struct Buffer72
{
public unsafe fixed byte bs[7];
}
当然,第二个定义更简单。问题在于必须为固定缓冲区提供不安全的关键字。我理解这是使用指针实现的,因此是不安全的。我的问题是为什么它必须是不安全的?为什么C#不能提供任意长度的常量数组,并将其保留为值类型,而不是将其作为C#引用类型数组或不安全缓冲区?