【问题标题】:Create/Initialize a List of controls one time in static class在静态类中一次创建/初始化控件列表
【发布时间】:2011-06-17 08:10:58
【问题描述】:

我应该在静态 Ctor 中执行此操作吗?否则,如果 Create 方法是公共静态的,每个人都可以调用它并重新创建控件列表。这不是我们想要的!

【问题讨论】:

    标签: c# class static constructor factory


    【解决方案1】:

    在我的公共 Get 中,我会检查我的对象列表是否为空并在那里创建它,然后再将其返回给调用者。不要忘记lock这部分代码,以确保只有空列表中的第一个调用才会创建。

    【讨论】:

    • 你的意思是:msdn.microsoft.com/de-de/library/c5kehkcz(v=vs.80).aspx ???为什么要锁定菜单控件的创建?
    • 您需要锁定它,因为如果您的实例的 Get 属性同时从 2 个不同的线程访问,您可能会发现它们都将尝试以意外结果创建您的菜单。如果您的实例将从单个线程访问,则不需要。
    • 代码在 asp.net 应用程序中运行,所以...假人是对的 :)
    【解决方案2】:

    我不确切知道你打算做什么(你的问题很模糊),但如果你想确保你的初始化在调用你的类的任何成员之前只执行一次,静态构造函数是要去的地方。

    【讨论】:

    • 一起构建一个 menuItems 列表,将它们附加到 ContextMenu 并使用公共 Get 方法返回。到目前为止,ContextMenu 是在 Get 方法中创建的,因此创建了多次...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2011-08-26
    相关资源
    最近更新 更多