是否可以将空的Platform :: Array <uint8>传递给Event委托?</uint8>

时间:2014-12-18 06:36:44

标签: c# c++-cx

我正在使用C ++ - CX为Windows Phone 8编写一个Windows运行时组件(并使用C#中的组件)。

在Cx方面,我正在构建一些Platform::Array<uint8>个对象,我正在尝试使用Event / Delegate将它们传回C#端。

当数组不为空时,这可以正常工作,例如:

public delegate void DataReceivedFunction(const Array<uint8>^ a, const Array<uint8>^ b);
...
// public member
event DataReceivedFunction^ DataReceivedEvent;

...
// Inside some function
// Build a byte array with 5 elements
Array<uint8>^ five = ref new Array<uint8>(5);

// Build an empty array
Array<uint8>^ empty = ref new Array<uint8>(0);

DataReceivedEvent(five, empty);

单步执行代码,空数组成功创建并且长度为零,因此传递给DataReceivedEvent时不为null。

但是在C#端,空数组不是byte[0]而是null。另一个数组就像你期望的那样工作。

我猜Cx层是智能的,并假设它可以释放这个对象,因为它不包含任何字节?有没有人有这方面的经验?

(它肯定可以在C#端解决,但通常我不想返回空对象所在的null个对象。)

0 个答案:

没有答案