[英]Fixed Size Byte Array
public : array<Byte>^ Foo(array<Byte>^ data)
获取动态大小托管数组
但是如何获得固定大小的托管字节数组呢?
我想强迫C#用户发送8字节数组; 并获得8个字节
样式:
public : Byte[8] Foo(Byte[8] data)
编辑:
可以解释为什么它在安全环境中的不可能性?
如果你想强制使用 8个字节...请考虑发送一个long
或ulong
。 老派,但它的确有效。 它还具有不需要对象( byte[]
是对象)的优点 - 它是纯值类型(在这种情况下是基元)
C#不允许你这样做。 您只需验证数组的长度,如果长度不是8,则可能抛出异常。
另外,你的函数类型不能是Byte[8]
; 你必须把它改成Byte[]
。
您可以在结构中使用固定大小的缓冲区 。 但是你需要它在一个不安全的区域。
unsafe struct fixedLengthByteArrayWrapper
{
public fixed byte byteArray[8];
}
在C ++方面,您需要使用inline_array
来表示此类型。
正如Marc所说,固定大小的缓冲区并不适合使用。 您可能会发现进行运行时长度检查更方便。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.