1

私は以下のコードを持っています。

interface IFirst
{
   void Show();
}

public class Test : IFirst
{
   void IFirst.Show()
   {
       Console.WriteLine("First");
   }
}

ここで実装クラスでは、Show()のパブリックアクセス指定子を提供できません。メインプログラムからこのShow()を呼び出すにはどうすればよいですか?

4

3 に答える 3

5

試す、

IFirst obj = new Test();
obj.Show();
于 2012-09-22T08:56:39.543 に答える
0

明示的なインターフェイスメソッドにはインターフェイスを使用してのみアクセスでき、それらを実装するクラスではアクセスできないため、変数をインターフェイスタイプにキャストする必要があります。明示的なインターフェイス実装の使用は、コードカプセル化の形式であり、クラスの実装の詳細を非表示にすることができます(競合するメソッドの名前を持つ多くのインターフェイスを実装することもできます)。

Test test = new Test();
var casted = test as IFirst;
casted.Show();

また、メソッドに変数を送信する暗黙のキャストを使用することもできます。

public void ShowMeATrick(IFirst first) {
    first.Show();
}

Test test = new Test();
ShowMeATrick(test);
于 2012-09-22T09:06:16.353 に答える
0

明示的なインターフェイスメソッドには、インターフェイスを介してのみアクセスでき、それらを実装するクラスを介してアクセスすることはできません。

コードでは、クラスのインスタンスをインターフェースにキャストしてから、明示的に定義されたメソッド/プロパティを参照できます。

明示的なインターフェイスに関するMSDNリンク:http: //msdn.microsoft.com/en-us/library/ms173157%28v=vs.100%29.aspx

同様のことを尋ねる別の質問: コンパイルエラー:インターフェイスを明示的に実装しているときに、「修飾子'public'はこのアイテムには無効です」

于 2012-09-22T09:08:38.493 に答える