静态 class 与静态变量的最佳实践
Static class vs. static variables best practice
我使用 WinForms。在此应用程序中,我可以显示查看模式和编辑模式,这两种模式将显示不同的面板(Panel ViewPanel
、Panel EditPanel
)。
它们都只创建一次,并且都包含其他控件..(Label
s,TextBox
es)。
但是 ViewPanel
和 EditPane
l 没有同时显示,所以我需要能够删除一个并添加另一个以便用户可以看到它。
在其他 classes 中,我有功能和事件与模式交互,并且可能会改变模式,从 "Edit" 到 "View" 所以我需要显示或删除这些面板.
我创建了一个面板 (WrapPanel
) 作为它们的父面板,因此我通过将 ViewPanel
或 EditPanel
添加到 ControlCollection
来显示 [= =21=]。所以移除面板很容易,如果我写:
WrapPanel.Controls.Clear();
它可以轻松删除显示的面板,但为了将所需面板(ViewPanel
或 EditPanel
)添加到包装中,我需要从其他 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。
我使用 WinForms。在此应用程序中,我可以显示查看模式和编辑模式,这两种模式将显示不同的面板(Panel ViewPanel
、Panel EditPanel
)。
它们都只创建一次,并且都包含其他控件..(Label
s,TextBox
es)。
但是 ViewPanel
和 EditPane
l 没有同时显示,所以我需要能够删除一个并添加另一个以便用户可以看到它。
在其他 classes 中,我有功能和事件与模式交互,并且可能会改变模式,从 "Edit" 到 "View" 所以我需要显示或删除这些面板.
我创建了一个面板 (WrapPanel
) 作为它们的父面板,因此我通过将 ViewPanel
或 EditPanel
添加到 ControlCollection
来显示 [= =21=]。所以移除面板很容易,如果我写:
WrapPanel.Controls.Clear();
它可以轻松删除显示的面板,但为了将所需面板(ViewPanel
或 EditPanel
)添加到包装中,我需要从其他 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。