我有一个类 class1 并且在 C++ 中有一个函数定义为:
class1 GetNextObject(class1 x)
{
return (x + sizeof(x));
}
因此,这将内存中的下一个块类型转换为 class1。我如何在 C# 中做到这一点?我需要将下一个空间块作为 class1 类型返回。
我有一个类 class1 并且在 C++ 中有一个函数定义为:
class1 GetNextObject(class1 x)
{
return (x + sizeof(x));
}
因此,这将内存中的下一个块类型转换为 class1。我如何在 C# 中做到这一点?我需要将下一个空间块作为 class1 类型返回。
您不能在 中执行此操作C#
,因为您无法控制您的类型占用的块空间。它在您机器的内存空间中移动,就像GC
在垃圾收集后尝试对内存空间进行碎片整理一样。
而且,这不是您打算用语言(或基本上C#
任何其他语言)做的事情。CLR
如果您需要深入控制内存消耗和/或内存高级操作,请坚持使用C++
.
C++ 函数不需要将 class1 对象数组作为参数,而是只接受一个对象并返回内存中的下一个空间
这在 C# 中不必担心:
内存的管理方式不是您知道或担心的事情,即使您知道,也不是您可以控制的事情,也可能会发生变化(取决于 Microsoft 架构师)。
你不能在 C# 中做同样的事情。内存的管理方式与 C++ 非常不同,你不能指望下一个空间块可能是另一个有效class1
的,你甚至不能轻易地看到下一个内存是什么。
您可能想使用LinkedList<T>
. 例如
LinkedList<class1> myList = new LinkedList<class1>
(new[] { new class1(1), new class1(2), new class1(3) });
LinkedListNode<class1> myItem = myList.First;
Console.WriteLine(myItem.Next.Value.Id); // 2
public class class1
{
public int Id { get; set; }
public class1(int id)
{
this.Id = id;
}
}
但更常见的方法是将列表作为列表进行管理。因此,与其期望能够class1
从另一个class1
实例获取一个对象,如果您希望能够同时引用这两个对象,您只需传递数组/列表/ IList<T>
/etc。您想与之合作的。