5

内部インターフェイスを実装する内部クラスを開発しています。メソッドを内部として宣言できない理由、次のエラーが発生する理由を誰でも説明できますか:「公開されていないため、インターフェイスメンバーを実装できません」。

メソッドをパブリックとして宣言する必要があることはわかっていますが、まったく意味がありません。

インターフェイスとクラスの両方が内部である場合、メソッドを public と宣言するポイントは何ですか? 誤解を招きませんか?

このサイトで関連する質問を読みました。私のクラスは内部であるため、正確な複製ではありません。

4

2 に答える 2

13

簡単に言えば、それが言語設計者が設計した方法だからです。内部インターフェイスであっても、メソッドは暗黙的にパブリックです。それは物事を単純にしますが、他の点では苦痛です。

内部インターフェースの使用を「隠し」たいパブリック クラスが必要な場合は、明示的なインターフェース実装を使用できますが、それには他の欠点があります。

もちろん、クラスが内部の場合、メソッドが public であることは問題ではありません。他のアセンブリは型を認識できないため、メソッドを呼び出すことができません。

C# (または一般的には .NET) が内部インターフェイスほど慎重に設計されていないことに私は間違いなく同意します。

エラー メッセージが表示される正確な理由については、C# 4 仕様 (インターフェイス マッピング) のセクション 13.4.4 が理由です。実装は、非静的パブリック メンバーと明示的なインターフェイス メンバーの実装に対してのみ見つかります。インターフェイスに実装されていないメンバーがある場合は、エラーが発生します。

于 2012-06-22T18:51:56.860 に答える