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