每当我可以良好练习时使用静态类?

Bra*_*zol 4 c# static visual-studio-2010 winforms

让我更准确一点.在我的winforms项目中,我创建了一些类来管理/创建程序的每个部分.我这样做是为了更好地控制我的代码.例如,我有一个管理我的DataGridView控件的类.我将它命名为gridManager,并在其中设置了所有属性,颜色等,并且我还有改变这些设置的方法(例如changeBackgroundColor()等).我也为splitContainer中的每个Panel都有这种类.在这些类中,我初始化每个作为面板子项的Control,我将它们添加到该面板集所有属性等等.

我写了这一切是为了让你更好地了解这些课程的目的.

现在我的问题是:这个类是静态的好习惯吗?内部的所有控件和方法都是静态的?

起初我让它们非静态但是当我想调用方法(例如)从选项中改变颜色时我不得不将MainForm作为参数传递或者像这样做:

(Application.OpenForm[0] as MainForm).gridManager.changeColor();
Run Code Online (Sandbox Code Playgroud)

它的静态版本使它更容易.但这让我想知道它是否是一件好事.呃很多解释我希望我不完美的英语不会让它更难理解.:)

Cod*_*aos 7

全局可变状态通常是个坏主意.

静态方法/类对于简单的sideeffect自由函数是有益的.Math并且Enumerable是很好的例子.

另一方面,您需要静态字段内的控件.这些是可变状态,因此应该避免.例如,如果您明天希望有两个表单实例,则需要两个经理类实例.但它是静态的,你现在需要使用它重写所有代码.