【问题标题】:Referencing a static class from an array?从数组中引用静态类?
【发布时间】:2010-12-21 10:23:09
【问题描述】:

我有一个数字列表,每个相同的数字应该完全相同。所以我对每个数字都有静态类,所以如果我更改类,它引用的所有数字也会这样做。

访问数字的方式是通过包装函数,所以我没有直接引用数组,例如:

Map.GetBlock(x,y).AccessToStaticClassMembers;

那么,我该怎么做呢?

【问题讨论】:

  • 这个设计模式的名字是?
  • 不知道。这需要尽可能少占用内存。
  • 你的问题真的,真的,不清楚。请更详细地解释您正在尝试做什么,并发布您无法使用的代码。
  • 好吧。我有一个数字数组。这些数字应该是指静态类。我想通过调用 Map.GetBlock(X, Y).CLASSMEMBERS 来访问这些类,以避免必须实例化数组中的 32768 个数字。静态类使这更容易整理和配置。如何从函数返回静态类?

标签: c# arrays static-classes


【解决方案1】:

我不太确定你想要什么。但听起来你试图确保每个数字在内存中只有一个实例。如果是这样的话,这样的事情有什么问题:

static public class ObjectMapping
{
    static Dictionary<int, object> dictionary = new Dictionary<int, object>();

    static public object GetObjectForNumber(int x)
    {
        object o;
        if (!dictionary.ContainsKey(x))
        {
            o = CreateObjectForNumberTheFirstTime(x);
            dictionary.Add(x, o);
            return o;
        }
        return dictionary[x];
    }
}

当然,我省略了线程安全和在第一次访问中创建对象等内容,由您自己完成。

【讨论】:

  • 这看起来像我需要的。谢谢。那么,可以通过 GetObjectForNumber(X).MEMBERS 访问由此返回的结果吗?似乎是这样。此外,这也是处理我想到的其他事情的好方法!
【解决方案2】:

为什么要让它成为静态的?如果我没听错的话,这看起来更像是某些抽象方法的覆盖或某些接口方法的实现。

【讨论】:

  • 静态以减少内存使用。这很关键。一个字节数组不会占用太多空间,一组静态类也不会。如果它们都只是类,那么我将占用大量内存。
  • Ran 方法对静力学没有帮助。你能负担得起反思吗?
猜你喜欢
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
相关资源
最近更新 更多