提问人:Jazzer008 提问时间:3/22/2023 最后编辑:Jazzer008 更新时间:3/22/2023 访问量:178
ref 参数的内联变量声明解决方法
Inline variable declaration workaround for ref parameter
问:
这纯粹是出于兴趣。我特别想知道是否有一种更简洁的方法来传递 ref int 而无需创建变量。
我目前的解决方法:
ref stackalloc int[1] { 0 }[0]
以及上下文:
public struct MyStruct
{
private float x;
private float y;
private bool alive;
public MyStruct(byte[] data) : this(data, ref stackalloc int[1] { 0 }[0]) { }
public MyStruct(byte[] data, ref int index)
{
x = BitConverter.ToSingle(data, index); index += sizeof(float);
y = BitConverter.ToSingle(data, index); index += sizeof(float);
alive = BitConverter.ToBoolean(data, index); index += sizeof(bool);
}
}
构造函数使用上下文:
MyStruct DeserializeOneStruct(byte[] data)
{
MyStruct struct = new MyStruct (data);
return struct;
}
List<MyStruct> DeserializeMultipleStructs(byte[] data)
{
List<MyStruct> structList = new List<MyStruct>();
int index = 0;
int structCount = data[index]; index += sizeof(byte);
for (int i = 0; i < structCount ; i++)
structList.Add(new MyStruct(data, ref index));
return structList;
}
答:
评论