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 テストは、サポートされる静的 int テストとして作成し、出力を返すためです。

于 2016-10-21T05:42:29.787 に答える
-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 に答える