【发布时间】:2011-02-21 04:35:03
【问题描述】:
我正在尝试在 C# 中启动一个大型项目。我以前的经验是在 Delphi 中,默认情况下,每个表单都是在应用程序启动时创建的,并且表单引用保存在(gasp)全局变量中。所以我试图让我的想法适应一个 100% 面向对象的环境,但我的脑袋有点晕。
我的应用程序将包含大量类这些类中的大多数实际上只需要一个实例。所以我在想:静态类。我不太确定为什么,但我在这里读到的大部分内容都说,如果我的类要保持一个状态,我认为这意味着任何属性值,我应该使用单例结构。好的。但是有些人出于我无法理解的原因,认为单身人士也是邪恶的。
这些类都没有在除此程序之外的任何地方使用的危险。所以它们当然可以作为常规对象正常工作(与单例或静态类相比)
然后是对象之间的交互问题。我很想创建一个全局类,其中包含许多引用这些类的单个实例的公共静态属性。我还考虑过让它们成为 MainForm 的属性(静态或实例,不确定是哪个)。然后我会让我的每个班级都知道 MainForm 作为所有者。然后各种对象可以相互引用为 Owner.Object1、Owner.Object2 等。
我担心我的电子墨水快用完了,或者至少让任何愿意和我坚持这么久的人耐心等待。我希望我已经清楚地解释了我完全混乱的状态。我只是在寻找一些关于我的情况的最佳实践的建议。欢迎并感谢所有意见。
提前致谢, 大卫詹宁斯
【问题讨论】:
-
您可以从 Delphi 表单中删除全局变量,并根据需要实例化和释放它们。
-
感谢所有花时间回复的人。你给了我很多思考。多么棒的社区。我必须承认,当我说我的大部分课程只需要一个实例时,我夸大了。事实是它只有大约 12 个中的 3 个。再次感谢您鼓励我退后一步,仔细查看我的一些班级决定。在我加快速度的同时,这个网站将成为我最重要的 C# 智慧来源之一。
标签: c# oop static singleton global