2017-03-25 27 views
0

Visual Studioを使用してnインターフェイスを明示的に実装していたときにこの問題が発生しました。したがって、インタフェースにはプロパティが含まれていますが、抽象クラスでプロパティを明示的に実装すると、コンパイラは「この修飾子はpublicではありません」というエラーをスローします。Visual Studioを使用して明示的にnインターフェイスを実装

下記のコードを参照してください。

interface ITest 
{ 
    bool MyProperty { get; set; } 
} 

internal class Test : ITest 
{ 
    public bool ITest.MyProperty 
    { 
     get 
     { 
      return false; 
     }  

     set { } 
    } 
} 
+1

したがって、 'public'修飾子を削除してください。 – MicroVirus

答えて

0

programming guideによると、明示的なインターフェイス実装には常にアクセス修飾子がありません。キーワードpublicを削除する必要があります。

これについて考えると、これはかなり意味があります。明示的なインタフェース実装のための可能なアクセス修飾子は1つしかありません。インタフェースには同じ修飾子が使用されます。したがって、修飾子を指定する必要はありません。

インターフェイスにpublicとマークされており、明示的な実装がprivateの場合は意味がありません。明示的な実装を記述する唯一の理由は、そのメンバをそのインタフェースだけに公開することです。メンバがインタフェースよりアクセスしにくいのは奇妙なことでしょうか?

一方、インターフェイスがinternalであり、メンバーがpublicとマークされていても意味をなさないでしょう。メンバがインターフェイスよりアクセス可能な場合は、インターフェイスにのみ公開されません。

+0

ありがとうスイーパー。あなたはとてもうまく説明しました。とった! – Rahul

関連する問題