创建公用事业类?
我是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);