创建实用程序类?

时间:2010-05-18 13:50:41

标签: c# oop class utilities

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

我现在很方便进入我的项目,并且我有很多一般使用方法,我想把它放到一个实用程序类中。有没有最好的方法来创建实用程序类?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

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

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

8 个答案:

答案 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);

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

C# Tutorial - Extension Methods

答案 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)

  1. 将Utility类创建为公共静态类。
  2. 带有静态关键字的定义的实用程序功能方法

方法调用:-

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);