gpt4 book ai didi

c# - 什么是 C# 中的双指针等效项?

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:21 24 4
gpt4 key购买 nike

我正在尝试将 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 的值,则为单次取消引用赋值)。这也可以与双指针相媲美。

关于c# - 什么是 C# 中的双指针等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com