gpt4 book ai didi

.net - 在 .NET 中使用 Hashtable 将指针映射到不可变对象(immutable对象)

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

我有一个 Hashtable 对象,它用一个字符串“命名”或“映射”类中的各个字段

ref class Interrupt{
Interrupt(){
this->type = 0;
this->size = 0;
}
int type;
int size;
}

Interrupt^ interrupt = gcnew Interrupt();

Hashtable^ map = gcnew Hashtable();
map->Add("InterruptType", interrupt->type);
map->Add("InterruptSize", interrupt->size);

此类在运行时被修改,因此类型和大小都等于 2。

进一步查询我的哈希表,但值没有改变。我明白这是因为它们是不可变的。有没有一种方法可以指定我的哈希表来保存指向我的类的字段的指针,而不是存储引用的值?

我知道我可以修改 Interrupt 类来保存自定义对象而不是原始 int,但它会涉及大量重构。

最佳答案

I understand that it is because they are immutable.

你理解错了。是的,整数是不可变的。但是 map 值没有改变,因为整数是值类型,因此按值传递给 map 的 Add() 方法。换句话说,该映射包含传递给 Add() 方法的值的拷贝,而不是对传递给该方法的变量 的引用。

要解决此问题,您需要将整数包装在引用类型(类)中,并为 map 提供对该类所需实例的引用。然后确保无论何时更改整数,都是将它们更改为正确实例的成员。

关于.net - 在 .NET 中使用 Hashtable 将指针映射到不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301051/

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