[英]What does int[*] mean in C# under Visual studio 2017
我們利用第三方dll,該第三方dll公開了一個使用out 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中失敗?
這意味着該數組具有一個或多個不為零的下限。
例如,此代碼:
Array test = Array.CreateInstance(typeof(int), new[] { 2 }, new[] { 2 });
Console.WriteLine(test.GetType().FullName);
打印System.Int32[*]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.