6

是否有可用于双向查找的 .NET 数据结构?

这就是问题所在:序列化。我的对象包含一个指向 10 个预定义静态对象之一的字段。写入文件时,我写了一个字符,表示正在引用 10 个对象中的哪一个。此时,我需要一个查找数据结构,它允许我根据被引用的对象获取字符代码。反序列化时,我需要做相反的事情。我可以想到很多其他地方可以使用这种数据结构。

4

2 回答 2

6

我将创建一个包含两个通用Dictionary对象的数据结构,它们相互镜像,其中一个对象的键代表另一个对象的值,反之亦然。这将允许O(1)在两个方向上进行查找。

于 2009-07-02T15:38:37.527 回答
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 ?;
        }
    }
}

反序列化,您只需获取字符并通过该字典运行它以获取静态对象。

于 2009-07-02T15:19:52.447 回答