我正在使用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
个对象。)