【发布时间】:2018-10-22 09:05:34
【问题描述】:
我们使用第三方 dll,它公开了一个取出 NetworkStream.Data[] 参数的方法:
public void Read(int elementsCount, int timeOutInMs, out Data[] array, out bool timedOut)
我们通过传入 NetworkStream.Data(在所述库中定义的数据类型)数组在代码中使用它,它在 Visual Studio 2012 下编译良好。
但是,在 Visual Studio 2017 下编译时,会产生转换错误:
错误 CS1503 参数 4:无法将 'out NetworkStream.Data[]' 转换为 'out NetworkStream.Data[*]'
诸如 DnSpy 之类的反编译器确实在方法的工具提示中指出了相同的内容,而在 IL 中它显示了参数是
[out] valuetype NetworkStream.Data[0...]& data
这个 NetworkStream.Data[*] 或 NetworkStream.Data[0...] 是什么意思,为什么在 VS 2017 中转换失败?
【问题讨论】:
-
好像和this有关,不过我自己没有这方面的经验,所以我会留给你判断它是否有用。
-
似乎
var声明可以获取非零基数组类型的属性,即使 C# 不允许拼写它。
标签: c# visual-studio-2017