簡體   English   中英

在Visual Studio 2017下C#中int [*]是什么意思

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM