静态类与静态变量最佳实践

时间:2016-11-23 22:01:26

标签: c# winforms static-classes

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

它们都只创建了ONCE,它们都包含其他控件..(Label s,TextBox es。。

ViewPanelEditPane l并未同时显示,因此我需要删除一个并添加另一个,以便用户可以看到它。

在其他课程中我有功能&与“编辑”模式相互作用并可能更改模式的事件,因此我需要显示或删除这些面板。

我创建了一个面板(WrapPanel)作为其父级,因此我将ViewPanelEditPanel添加到ControlCollection WrapPanel }}。因此,如果我写的话,删除面板很容易:

WrapPanel.Controls.Clear();

它将轻松删除显示的任何面板,但为了将所需的面板(ViewPanelEditPanel)添加到包装中,我需要从其他类(具有事件和函数)引用它可能需要将显示从“编辑”更改为“查看”。)

因此,将这些面板声明为“静态”似乎可以轻松地从任何类中引用这些面板。

[我在一些论坛上阅读以避免制作静态类,不确定原因,我想知道这是否与静态变量有关。]

最佳做法是在Form1

中将这些变量声明为静态变量

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

或者,制作另一个(非静态)课程是更好的做法 - 例如:

public class VarClass

并将Vars声明为:

public Static Panel ViewPanel;
public Static Panel EditPanel;

或制作静态类的第三个选项 - 例如:

public static class StaticVarClass

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

表演的最佳做法是什么和/或什么是专业和/或各自的意见?

1 个答案:

答案 0 :(得分:1)

如果不创建类的对象,并且此类包含一些全局使用的常量,则应创建静态类。如果不需要类的对象,则您的选择应该是静态类。

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