27

我对 OOP 非常陌生,并且正在尽最大努力使事情严格基于类,同时使用良好的编码原则。

我现在很容易进入我的项目,并且我想将许多通用使用方法放入实用程序类中。是否有创建实用程序类的最佳方法?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

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

创建这个 Utilities 类之后,我是否只是创建一个 Utilities 对象,然后运行我选择的方法?我的这个实用程序类的想法是否正确?

4

8 回答 8

47

你应该把它变成一个static类,像这样:

public static class Utilities {
    public static int Sum(int number1, int number2) {
        return number1 + number2;
    }
}

int three = Utilities.Sum(1, 2);

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

于 2010-05-18T13:53:17.250 回答
14

如果您正在使用 .NET 3.0 或更高版本,您应该研究扩展方法。它们允许您编写一个static针对特定类型的函数,例如Int32,同时似乎是该对象上的一个方法。那么你可以有:int result = 1.Add(2);.

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

C# 教程 - 扩展方法

于 2010-05-18T13:57:25.957 回答
4

static使用带有方法的类会更好static。然后你不需要实例化你的实用程序类来使用它。它看起来像这样:

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

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

int result = Utilites.sum(1, 3);
于 2010-05-18T13:55:06.470 回答
1

最好是使函数对类成员不可靠。因此,您可以将函数设为静态。

更好的是使函数成为一种类型的扩展方法。例如见这里

于 2010-05-18T13:53:56.127 回答
0

虽然是 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 原则之间的权衡之前,这将是一种很好的做法。

于 2010-05-18T14:34:57.667 回答
0

是的,这不会编译,因为静态类中不支持的 int test 要么将其设置为将受支持的静态 int 测试并返回输出

于 2016-10-21T05:42:29.787 回答
0
  1. 创建实用程序类作为公共静态类。
  2. 使用 static 关键字定义的实用程序函数方法

方法调用:-

int 结果 = Utilities.sum(1, 2);

   public static class MyMath
         {
             int result;

             public static int sum(int number1, int number2)
             {
                 result= number1+number2;
                 return result;
             }
        }
于 2019-04-24T10:15:47.703 回答
-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);
于 2010-05-18T13:55:53.843 回答