0

私は今いくつかのコードを見ていますが、少し混乱しています。このクラスはインターフェイスではありませんが、これらのメソッドが定義されていないのはなぜですか? また、bedsides メソッドのシグネチャーには、通常のプロパティがあります。非常に紛らわしいです!

public class MyClass
{
   public string Foo(string str1);
   public string Bar(string str, int i);

   public string myProperty { get; set; }
}

助けてくれてありがとう

4

2 に答える 2

6

いいえ、それは示されているように有効ではありません。コンパイルを試みることで、それを証明できます。実装されていないメソッドをクラスに含めるには、 として宣言する必要があります。これは、実装されていないabstract各メソッドにも当てはまります。

abstractクラスは概念的にはインターフェイスに似ていますが、実装も含まれている場合があります。これにより、一部のメソッドが継承階層全体で共通の実装を共有する可能性があるが、他のメソッドは子孫型によって実装された場合にのみ意味を持つシナリオで役立ちます。

externまたはとしてマークされたメソッドにはpartial本体がない場合もありますが、externメソッドは通常相互運用性があり (ネイティブ コードで実装されます)、partialメソッドは別の.csファイルに実装されます (また、 としてマークされたクラスでのみ宣言できますpartial)。

余談ですが、このプロパティは自動であるため問題ありません (バッキング フィールドが作成され、get/set メソッドが単にそのフィールドを返す/設定するだけであることを意味する構文糖衣)。

于 2012-07-18T20:25:20.003 に答える
1

メソッドを次のようにマークするabstractと、abstractクラスが作成されます

しかし、なぜそれをしたいのですか?基本クラスにコードがない場合は、インターフェイスを使用するだけです

于 2012-07-18T20:24:54.603 に答える