假设我有以下类和结构定义,并将它们作为字典对象中的键:
public class MyClass { }
public struct MyStruct { }
public Dictionary<MyClass, string> ClassDictionary;
public Dictionary<MyStruct, string> StructDictionary;
ClassDictionary = new Dictionary<MyClass, string>();
StructDictionary = new Dictionary<MyStruct, string>();
为什么这个方法有效:
MyClass classA = new MyClass();
MyClass classB = new MyClass();
this.ClassDictionary.Add(classA, "Test");
this.ClassDictionary.Add(classB, "Test");
但这个在运行时会崩溃:
MyStruct structA = new MyStruct();
MyStruct structB = new MyStruct();
this.StructDictionary.Add(structA, "Test");
this.StructDictionary.Add(structB, "Test");
它显示键已经存在,这是预期的,但仅适用于结构体。而类则将其视为两个独立的条目。我认为这与数据是作为引用还是值来保存有关,但我想要更详细的解释。
classA
,classB
,structA
和structB
是什么。能否补充一下这部分代码? - Rotem