web-dev-qa-db-ja.com

ユーティリティクラスを作成しますか?

私はOOPに非常に慣れていないため、適切なコーディング原則を使用しながら、クラスに厳密に準拠するように最善を尽くしています。

私は今、自分のプロジェクトに公平に参加しています。ユーティリティクラスに入れたい一般的な使用方法がたくさんあります。ユーティリティクラスを作成する最良の方法はありますか?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

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

このUtilitiesクラスを作成した後、Utilitiesオブジェクトを作成して、選択したメソッドを実行するだけですか?このユーティリティクラスのアイデアは正しいですか?

20
sooprise

次のように、それをstaticクラスにする必要があります。

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

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

クラスには(通常)フィールドやプロパティがあってはなりません。 (コード全体でいくつかのオブジェクトの単一のインスタンスを共有する場合を除き、その場合はstaticを読み取り専用プロパティにすることができます。

37
SLaks

.NET 3.0以降を使用している場合は、拡張メソッドを調べる必要があります。それらは、オブジェクトのメソッドonのように見えながら、_Int32_のような特定のタイプに対して機能するstatic関数を書くことを可能にします。したがって、次のようになります。int result = 1.Add(2);

これを試してください。それはあなたに別の方法を示すだけかもしれません。 ;)

C#チュートリアル-拡張メソッド

13
Lance

staticメソッドでstaticクラスを使用するほうがよいでしょう。その後、それを使用するためにユーティリティクラスをインスタンス化する必要はありません。次のようになります。

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

その後、次のように使用できます。

int result = Utilites.sum(1, 3);
2
Jason Webb

クラスのメンバーに関数が信頼できないようにするのが最善です。したがって、関数を静的にすることができます。

関数を型の拡張メソッドにするのが良いでしょう。 例はこちらを参照

1
RvdK
  1. パブリック静的クラスとしてユーティリティクラスを作成します。
  2. Staticキーワードを使用して定義されたユーティリティ関数メソッド

メソッド呼び出し:-

int result = Utilities.sum(1、2);

   public static class MyMath
         {
             int result;

             public static int sum(int number1, int number2)
             {
                 result= number1+number2;
                 return result;
             }
        }
1
Rahul

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の原則の使用のトレードオフを調べるのに役立ちます。

1
tylermac

はい、これはコンパイルされません。静的クラス内でサポートされていないintテストは、サポートされる静的intテストとして作成し、出力を返すためです。

0
Pradeep Bellary