我可以使用.NET数据结构进行双向查找吗?
问题在于:序列化。我的对象包含一个指向10个预定义静态对象之一的字段。写入文件时,我写了一个字符,表示正在引用10个对象中的哪一个。此时,我需要一个查找数据结构,这将允许我根据被引用的对象获取字符代码。反序列化时,我需要反过来。我可以想到很多其他可以使用这种数据结构的地方。
答案 0 :(得分:6)
我将创建一个包含两个通用Dictionary
对象的数据结构,这两个对象以一种方式表示彼此的值,反之亦然。这样可以在两个方向进行O(1)
查找。
答案 1 :(得分:5)
在只有10个很少会改变的情况下,使用Switch语句的几种方法可能就足够了。
如果您可以控制静态对象,那么它们都可以实现一个返回“序列化代码”字符的新接口:
public interface IStaticObject
{
char SerializationCode { get; };
}
因此,朝这个方向前进很简单:someObject.SerializationCode。然后你也可以让你的静态对象都使用一个构造函数来注册它们的SerializationCode和一个带有Dictionary的单例实例。
public class SomeStaticObject : IStaticObject
{
public void SomeStaticObject()
{
StaticObjectRegistrar.Register(this.SerializationCode, this);
}
public char SerializationCode
{
get
{
return ?;
}
}
}
反序列化,您只需获取该字符并通过该字典运行它以获取静态对象。