gpt4 book ai didi

c# - 给定一个内存地址,是否可以从中创建一个对象?

转载 作者:行者123 更新时间:2023-11-30 23:23:12 25 4
gpt4 key购买 nike

在 C# 中,如果我创建一个哈希表并获取存储它的内存地址,我可以在程序的不同部分使用该内存地址来重新创建哈希表吗?

例如,我可以做类似的事情吗:

HashTable hash = new HashTable(oldHashPointer);

最佳答案

是也不是。按照您描述的方式,这在 C# 中是不可能的。例如下面的代码:

HashTable a = new HashTable();
HashTable b = a;

本质上是您正在尝试做的事情,没有 explicit 指针的使用。 HashTable b 不是一个单独的实体,它是一个指向存储在 HashTable a 中的引用的指针,它指向内存中的一个 HashTable 对象。

This MSDN article对此进行了详细说明。页面引述:

Pointer types do not inherit from object and no conversions exist between pointer types and object. Also, boxing and unboxing do not support pointers.

但是,如果您尝试在进程之间共享对象(在本例中为HashTable),您可以查看Memory Mapped Files .这些基本上允许您将序列化对象写入驻留在内存中的虚拟"file",也可以从其他进程访问。但是,这仅适用于 .NET 4.0 或更新版本。

关于c# - 给定一个内存地址,是否可以从中创建一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38468920/

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