gpt4 book ai didi

c# - 无法将类型 'byte' 转换为 'T'

转载 作者:行者123 更新时间:2023-11-30 20:09:13 26 4
gpt4 key购买 nike

我是 C# 的新手,所以我真的不知道如何制作它,但在 C++ 中我是这样做的

template <typename T> writeInt(int location, T value){
*(T*)&buffer[location] = value;
}

我在 C# 中尝试做同样的事情

public void WriteInt<T>(int location,T value)
{
(T)buffer[location] = value;
}

但我收到此错误无法将类型“byte”转换为“T”那我该怎么做,谢谢

最佳答案

首先,

您可能应该使用 MemoryStreamBinaryWriter 将基本类型写入缓冲区。正如建议的那样,您可以使用 BitConverter 类,但您最终会得到大量中间 byte[] 对象。

byte[] buffer;

int value1 = 10;
double value2 = 20;
string value3 = "foo";

using(var ms = new System.IO.MemoryStream())
{
using(var writer = new System.IO.BinaryWriter(ms))
{
writer.Write(value1);
writer.Write(value2);
writer.Write(value3);
}
}

buffer = ms.ToArray();

(value1value2value3 只是此处的示例,用于向您展示几个可用的重载;您应该查看the MSDN page on BinaryWriter 了解更多信息)

更重要的是,

您在 C++ 代码中使用了指针运算; C# 仅在 unsafe block 中运行时才提供真正的指针功能,您应该尽可能避免这种情况(它在这里)。 .NET 处理引用,而不是指针,因此您对实际内存分配没有太多控制权。

长话短说,您无法按照您尝试做的方式做您想要做的事情。

关于c# - 无法将类型 'byte' 转换为 'T',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6334605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com