-2

重複の可能性:
C#クラスに特定の静的関数を実装させる方法はありますか?

クラスを検討し、いくつかの理由で、このクラスに定数を強制的に含める必要があることを検討してください。これは、どのクラスのセットにも適用されます。私の特定のケースでは、対応するnull値を保持するために、いくつかのクラスの内部に定数が必要です。

私の場合、特定の方法で動作する必要があるために特定のインターフェイスを実装するクラスには、私のコンテキストで必要な3つの特別な値も必要です(コンテキストが長すぎて説明できず、ここではまったく役に立たない)。

したがって、基本的には、クラス内に特定の定数(外部からアクセス可能)を持つように強制する方法が必要です。これらのクラスに定数を簡単に入れることができることは知っていますが、コンパイラに次のように伝える方法を探している場合はどうでしょうか。「このクラスがこのインターフェイスを実装している場合(たとえば)、それがない場合はコンパイルしないでください。絶え間ない!"。

このようにして、定数を入れるのを忘れる可能性のあるプログラマーだけでなく、コンパイラーのチェックが行われます。

私の問題を説明できればと思います。前もって感謝します。

4

3 に答える 3

1

したがって、基本的には、クラス内に特定の定数(外部からアクセス可能)を持つように強制する方法が必要です。これらのクラスに定数を簡単に入れることができることは知っていますが、コンパイラに次のように伝える方法を探している場合はどうでしょうか。「このクラスがこのインターフェイスを実装している場合(たとえば)、それがない場合はコンパイルしないでください。絶え間ない!"。

必要なすべての情報/値を必要とする一意のパブリックコンストラクターを含むクラスを作成して、このようなことを実現できます。したがって、たとえば、次のようなものを使用できます。

class myClass{
   public readonly int Value1;
   public readonly string Value2;
   public myClass(int value1, string value2){
         Value1 = value1;
         Value2 = value2;
   }
}

実際、この場合、プログラマーはオブジェクトをインスタンス化して、使用可能な一意のコンストラクターに正しい値を与えることを余儀なくされ、2つのパブリックフィールドの値を変更できません(readonlyキーワードのため)。

于 2012-10-10T17:59:43.253 に答える
0

同じトピックに関する前の質問からの説明:

静的メソッドの呼び出しは、オブジェクト参照ではなくクラス名を介して行われます。それを呼び出すILコードは、それを定義したクラスの名前(必ずしも使用したクラスの名前ではない)を介して抽象メソッドを呼び出します。 。

前の投稿:C#で抽象静的メソッドを使用できないのはなぜですか?

于 2012-10-10T17:35:05.747 に答える
0

静的メソッドをクラスに追加するだけの何が問題になっていますか?静的メソッドをクラスに直接コーディングするのが完全に論理的であるのに、なぜ別のレイヤーが必要なのかわかりません。

 public class MyClass {
      public static MyClass TheMethod(int i){
           // TODO:
      }
 }
于 2012-10-10T17:35:54.387 に答える