我是OOP的新手,我正在努力保持严格基于类的东西,同时使用良好的编码原则。
我现在很方便进入我的项目,并且我有很多一般使用方法,我想把它放到一个实用程序类中。有没有最好的方法来创建实用程序类?
public class Utilities
{
int test;
public Utilities()
{
}
public int sum(int number1, int number2)
{
test = number1 + number2;
}
return test;
}
创建此Utilities类后,我是否只创建一个Utilities对象,并运行我选择的方法?我有这个公用事业课程的想法是否正确?
答案 0 :(得分:37)
您应该将其设为static
类,如下所示:
public static class Utilities {
public static int Sum(int number1, int number2) {
return number1 + number2;
}
}
int three = Utilities.Sum(1, 2);
该类应该(通常)没有任何字段或属性。 (除非您想在代码中共享某个对象的单个实例,在这种情况下,您可以创建static
只读属性。
答案 1 :(得分:12)
如果您使用的是.NET 3.0或更高版本,则应该研究扩展方法。它们允许您编写static
函数,该函数将针对特定类型执行操作,例如Int32
,同时似乎是 on 该对象的方法。那么你可以:int result = 1.Add(2);
。
试试这个;它可能只是向你展示另一种方式。 ;)
答案 2 :(得分:2)
最好使用static
类和static
方法。然后,您将不需要实例化您的实用程序类来使用它。它看起来像这样:
public static Utilites
{
public static int sum(int number1, int number2)
{
test = number1+number2;
return test;
}
}
然后你可以像这样使用它:
int result = Utilites.sum(1, 3);
答案 3 :(得分:1)
最好是使一个类的成员不能使用这些函数。因此,您可以将函数设置为静态。
更好的是使函数成为类型的扩展方法。 see here for example
答案 4 :(得分:1)
虽然是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原则的权衡之前,这将是一个好习惯。
答案 5 :(得分:1)
方法调用:-
int结果= Utilities.sum(1,2);
public static class MyMath
{
int result;
public static int sum(int number1, int number2)
{
result= number1+number2;
return result;
}
}
答案 6 :(得分:0)
是的,这不能编译,因为静态类中不支持的int test要么使它成为支持的静态int测试并返回输出
答案 7 :(得分:-3)
这样做。
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);