静态 class 与静态变量的最佳实践

Static class vs. static variables best practice

我使用 WinForms。在此应用程序中,我可以显示查看模式和编辑模式,这两种模式将显示不同的面板(Panel ViewPanelPanel EditPanel)。

它们都只创建一次,并且都包含其他控件..(Labels,TextBoxes)。

但是 ViewPanelEditPanel 没有同时显示,所以我需要能够删除一个并添加另一个以便用户可以看到它。

在其他 classes 中,我有功能和事件与模式交互,并且可能会改变模式,从 "Edit" 到 "View" 所以我需要显示或删除这些面板.

我创建了一个面板 (WrapPanel) 作为它们的父面板,因此我通过将 ViewPanelEditPanel 添加到 ControlCollection 来显示 [= =21=]。所以移除面板很容易,如果我写:

WrapPanel.Controls.Clear();

它可以轻松删除显示的面板,但为了将所需面板(ViewPanelEditPanel)添加到包装中,我需要从其他 class 引用它es(具有可能需要将显示从 "Edit" 更改为 "View" 的事件和函数)。

所以将这些面板声明为 'static' 似乎可以很容易地从任何 class.

引用这些面板

[我在一些论坛上读到避免制作静态 classes,不确定为什么,我想知道这是否也适用于静态变量。]

最好在 Form1 中将这些变量声明为静态变量吗?

('public partial class Form1' 是所有 WinForms 应用程序的默认打开 class)

或者制作另一个(非静态)更好class - 例如:

public class VarClass

并将 Var 声明为:

public Static Panel ViewPanel;
public Static Panel EditPanel;

或者第三个选项来制作静态 class - 例如:

public static class StaticVarClass

并在那里声明变量(也使用 'public static' 关键字)

性能的最佳实践是什么and/or各自的优缺点是什么?

如果你不创建一个class的对象,而这个class包含一些全局使用的常量,你应该创建静态class。如果不需要 class 的对象,您的选择应该是静态 class.

如果您的变量仅与某些功能相关,您应该使用静态变量创建 class。有时您想创建 class 的对象并在这些对象之间共享一些信息。对于这种情况,最好的办法是使用静态共享变量创建非静态 class。