Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节、UInt16和UInt32数据类型分配给C中的对象数据类型#_C# - Fatal编程技术网

C# 将字节、UInt16和UInt32数据类型分配给C中的对象数据类型#

C# 将字节、UInt16和UInt32数据类型分配给C中的对象数据类型#,c#,C#,根据link,对象数据类型可以指向任何数据类型。但是,我在执行此操作时出错。我的代码如下 public bool Write(Object[] data, UInt32 numData) { // Code } 测试写入API的代码如下: byte[] writeBuffer = new byte[256]; Random rnd = new Random(); UInt32 size = 256; rnd.NextBytes(writeBuffer); data.Write(write

根据link,对象数据类型可以指向任何数据类型。但是,我在执行此操作时出错。我的代码如下

public bool Write(Object[] data, UInt32 numData)
{
   // Code
}
测试写入API的代码如下:

byte[] writeBuffer = new byte[256];
Random rnd = new Random();
UInt32 size = 256;
rnd.NextBytes(writeBuffer);
data.Write(writeBuffer, size);
这里,writeBuffer是字节数组,但也可以是UInt16或UInt32数组。我在数据中遇到错误。请写入行,说明存在无效参数

请让我知道问题是什么

编辑1: 我的应用程序提供了一个“写”API,可以采用字节、UInt16或UInt32类型的数组。根据数据类型(在创建对象时设置),API在内部将UInt16和UInt32转换为字节数组,并将其传递到底层。顺便说一下,这是.NET微框架,其中API下面的层是本机C++代码。
谢谢。

您需要将字节[]强制转换为对象数组,如:

writeBuffer.Select(c=>(object)c).ToArray()

请注意,这称为“装箱”,会导致性能损失,如果可能,请继续使用字节[]。

您需要将字节[]强制转换为对象数组,如:

writeBuffer.Select(c=>(object)c).ToArray()

请注意,这称为“装箱”,会导致性能损失,如果可能,请继续使用字节[]。

您需要将字节[]强制转换为对象数组,如:

writeBuffer.Select(c=>(object)c).ToArray()

请注意,这称为“装箱”,会导致性能损失,如果可能,请继续使用字节[]。

您需要将字节[]强制转换为对象数组,如:

writeBuffer.Select(c=>(object)c).ToArray()
请注意,这称为“装箱”,将导致性能损失,如果可能,请继续使用字节[]。

通过对写入使用以下通用定义来避免装箱惩罚:

public bool Write<T>(T[] data, UInt32 size) {
  // Code
}
data.Write(writeBuffer, size);
在大多数情况下,如上所述,C#编译器将能够自动确定要为T推断的正确类型,尽管您可以在调用过程中随时指定它,如有必要:

UInt32[] uint32Array;
// :
data.Write<UInt32>(uint32Array, (UInt32)uint32Array.Count());
UInt32[]UInt32阵列;
// :
Write(uint32Array,(UInt32)uint32Array.Count();
通过使用以下写入的通用定义来避免装箱惩罚:

public bool Write<T>(T[] data, UInt32 size) {
  // Code
}
data.Write(writeBuffer, size);
在大多数情况下,如上所述,C#编译器将能够自动确定要为T推断的正确类型,尽管您可以在调用过程中随时指定它,如有必要:

UInt32[] uint32Array;
// :
data.Write<UInt32>(uint32Array, (UInt32)uint32Array.Count());
UInt32[]UInt32阵列;
// :
Write(uint32Array,(UInt32)uint32Array.Count();
通过使用以下写入的通用定义来避免装箱惩罚:

public bool Write<T>(T[] data, UInt32 size) {
  // Code
}
data.Write(writeBuffer, size);
在大多数情况下,如上所述,C#编译器将能够自动确定要为T推断的正确类型,尽管您可以在调用过程中随时指定它,如有必要:

UInt32[] uint32Array;
// :
data.Write<UInt32>(uint32Array, (UInt32)uint32Array.Count());
UInt32[]UInt32阵列;
// :
Write(uint32Array,(UInt32)uint32Array.Count();
通过使用以下写入的通用定义来避免装箱惩罚:

public bool Write<T>(T[] data, UInt32 size) {
  // Code
}
data.Write(writeBuffer, size);
在大多数情况下,如上所述,C#编译器将能够自动确定要为T推断的正确类型,尽管您可以在调用过程中随时指定它,如有必要:

UInt32[] uint32Array;
// :
data.Write<UInt32>(uint32Array, (UInt32)uint32Array.Count());
UInt32[]UInt32阵列;
// :
Write(uint32Array,(UInt32)uint32Array.Count();
没有任何东西“指向”那里的任何东西,没有涉及到指针,大多数(不是所有)类型继承自对象,但这并不意味着某个数组继承自对象数组,它只是意味着对象数组中的元素可以是任何东西

.Write需要一个对象数组,而您正在传入一个字节数组,它将不起作用。您必须将元素设置为1乘1(因为单个字节是一个对象,所以它可以存储在对象[]中)

然而,当我回答这个问题时,问题本身可能隐藏了一些糟糕的设计,你为什么要这么做?您能否向我们展示您的功能用例,以便我们提出替代方案?大多数情况下,如果您直接处理对象或对象集合,您就做错了。

没有任何东西“指向”那里的任何东西,没有涉及指针,大多数(不是所有)类型都继承自对象,但这并不意味着某个数组继承自对象数组,它只是意味着对象数组中的元素可以是任何东西

.Write需要一个对象数组,而您正在传入一个字节数组,它将不起作用。您必须将元素设置为1乘1(因为单个字节是一个对象,所以它可以存储在对象[]中)

然而,当我回答这个问题时,问题本身可能隐藏了一些糟糕的设计,你为什么要这么做?您能否向我们展示您的功能用例,以便我们提出替代方案?大多数情况下,如果您直接处理对象或对象集合,您就做错了。

没有任何东西“指向”那里的任何东西,没有涉及指针,大多数(不是所有)类型都继承自对象,但这并不意味着某个数组继承自对象数组,它只是意味着对象数组中的元素可以是任何东西

.Write需要一个对象数组,而您正在传入一个字节数组,它将不起作用。您必须将元素设置为1乘1(因为单个字节是一个对象,所以它可以存储在对象[]中)

然而,当我回答这个问题时,问题本身可能隐藏了一些糟糕的设计,你为什么要这么做?您能否向我们展示您的功能用例,以便我们提出替代方案?大多数情况下,如果您直接处理对象或对象集合,您就做错了。

没有任何东西“指向”那里的任何东西,没有涉及指针,大多数(不是所有)类型都继承自对象,但这并不意味着某个数组继承自对象数组,它只是意味着对象数组中的元素可以是任何东西

.Write需要一个对象数组,而您正在传入一个字节数组,它将不起作用。您必须将元素设置为1乘1(因为单个字节是一个对象,所以它可以存储在对象[]中)

然而,当我回答这个问题时,问题本身可能隐藏了一些糟糕的设计,你为什么要这么做?你能给我们展示一下你的功能用例吗