创建公用事业类?

我是OOP的新手,我正在尽最大努力保持严格基于类的东西,同时使用良好的编码原则。

我现在是一个很好的方式进入我的项目,我有很多一般使用方法,我想放入实用程序类。 有没有最好的方法来创建实用程序类?

public class Utilities { int test; public Utilities() { } public int sum(int number1, int number2) { test = number1 + number2; } return test; } 

创建此Utilities类后,我是否只创建一个Utilities对象,并运行我选择的方法? 我有这个公用事业课程的想法是否正确?

你应该把它变成一个static类,如下所示:

 public static class Utilities { public static int Sum(int number1, int number2) { return number1 + number2; } } int three = Utilities.Sum(1, 2); 

该类应该(通常)没有任何字段或属性。 (除非您想在代码中共享某个对象的单个实例,在这种情况下,您可以创建一个static只读属性。

如果您使用的是.NET 3.0或更高版本,则应该查看扩展方法。 它们允许您编写一个static函数,它将对特定类型(如Int32起作用,同时看起来是该对象的一种方法。 那么你可以得到: int result = 1.Add(2);

试试这个; 它可能只是向你展示另一种方式。 ;)

C#教程 – 扩展方法

使用static方法的static类最好。 然后,您将不需要实例化您的实用程序类来使用它。 它看起来像这样:

 public static Utilites { public static int sum(int number1, int number2) { test = number1+number2; return test; } } 

然后你可以像这样使用它:

 int result = Utilites.sum(1, 3); 

最好的是使这些function对于class级成员来说不可靠。 因此,您可以使函数静态。

更好的是使函数成为类型的扩展方法。 看这里举个例子

虽然是OOP的新手,并试图掌握最佳实践,但尝试避免实用程序类可能是个好主意。 你可以重新设计你的课程

 public class Sum { private int _result; public int Result { get { return _result; } } public Sum(int startNum) { _results = startNum; } public void Add(int num) { _result += num; } } 

被称为:

 Sum sum = new Sum(1); sum.add(2); int result = sum.Result; 

在进一步使用OOP的经验可以帮助您检查使用实用程序类与纯OOP原则之间的权衡时,这将是一种很好的做法。

是的,这不会编译因为静态类中不支持的int test要么使它成为支持的静态int测试并返回输出

做这个。

 public static class Utilities { int test; public static int sum(int number1, int number2) { test = number1+number2; return test; } } 

那样你就像使用它一样

 int result = Utilities.sum(1, 2);