簡體   English   中英

什么是 C# 中的雙指針等價物?

[英]what is a Double Pointer equivalent in c#?

我正在嘗試將 c++ 代碼轉換為 c#,但遇到了雙指針。 我想知道如何在 c# 中實現雙指針?

如果我說,

MyClass **MyClasses;

它是這樣初始化的。

MyClasses = new MyClass*[ClassNums];

在類中的另一個函數中,每個子項都在循環中初始化。

for(num = 0; num < classnum; num++)
{
    MyClasses[subnum] = new MyClass();
}

這個雙指針就是這樣使用的。

MyClasses[subnum]->MyMethod();

如何將其轉換為 c#? 我嘗試使用MyClasses[]數組,但我不太確定。 此外,我無法對此進行測試,因為它來自靜態庫,並且使用它的組件尚未轉換為 c#。 我應該使用通用列表還是什么?

在這種情況下,外部指針用於說明可跨越的范圍,如下面的循環所示:

for(num = 0; num < classnum; num++)
{
    MyClasses[subnum] = new MyClass();
}

因此,外部指針可能應該替換為列表、數組或IEnumerable<T>序列。

內部指針用於指向一個對象,因此應將其替換為引用。

所以:除非 C++ 代碼正在做一些非常具體的事情,否則你只需要:

MyClass[] arr = ...
...
for(int i = 0, i < arr.Length ; i++)
{
    arr[i] = new MyClass();
}
...
arr[i].MyMethod();

請注意,這只能通過查看代碼來解釋。 還有其他可能的方式來談論“雙指針*;考慮這個ref示例:

void SomeMethod(ref MyClass obj) {...}

這里obj是對引用(對MyClass )的引用——所有內容都被自動雙重解除引用(如果更改obj的值,則為單解除引用賦值)。 這也可以與雙指針相媲美。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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