假设我想要一个 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];
}
当然,第二个定义更简单。问题在于必须为固定缓冲区提供的 unsafe 关键字。我知道这是使用指针实现的,因此不安全。
我的问题是为什么它必须是不安全的?为什么 C# 不能提供任意恒定长度的数组并将它们保留为值类型,而不是使其成为 C# 引用类型数组或不安全的缓冲区?