2

これは、今日のコーディングで見た興味深いものです。

サンプルコードは次のとおりです。

public class SomeClass
{
   public IUtils UtilitiesProperty { get; set; }
}

public interface IUtils
{
   void DoSomething();
}

public class Utils : IUtils
{
   void DoSomething();
}

これはうまくコンパイルされます。

UtilitiesProperty とは何ですか? ユティルですか?複数のクラスが IUTil を実装した場合はどうなりますか? その場合、コンパイルに失敗しますか?

4

2 に答える 2

13

あなたがそれに値を与えるまで、それは何の値も持ちません (というか、それは値を持ちますnull)。参照を割り当てる場合Utils、はい:インターフェイスUtilsを介して公開されるです。それまたは を実装するものIUtilsだけを与えることができます。nullIUtils

于 2009-11-04T23:41:54.050 に答える
5

IUtils インターフェイスを実装するオブジェクトを保持できるプロパティです。より多くのクラスがこのインターフェイスを実装でき、インターフェイスを使用すると、ある程度の抽象化が可能になります (クラスがインターフェイス コントラクトに準拠している限り、消費者は気にしません)。

インターフェイス、抽象クラスなどの使用について読んでおくことをお勧めします。

たとえば、MSDN ドキュメント.

于 2009-11-04T23:41:55.843 に答える