C#内部vs VBNETフレンド
-
04-10-2019 - |
質問
これに質問: 友達に相当するC#に相当するものは何ですか?, 、私は個人的に「内部」に答えたでしょう。ただし、Jon Skeetは、C#にはVBフレンドの直接的な同等性はないと述べています。 Jon Skeetがそう言ったら、私はそうでないと言っている人ではありません! ; p
キーワードはどうすればいいのだろうか 内部 (c#)と同等ではありません 友達 (vbnet)それぞれの定義が次の場合:
友達(ビジュアルベーシック) 宣言ステートメントのキーワードは、同じアセンブリ内からの要素にアクセスできるが、アセンブリ外からではなくアクセスできることを指定しています。 [...
内部: :アクセスは現在のアセンブリに制限されています。
私の理解では、これらの定義は私にとってまったく同じことを意味します。
それから、それぞれvb.netでコーディングしているとき、私は 友達 クラスまたはプロパティが宣言されたアセンブリ内でのみアクセス可能であることを指定するキーワード。 C#でも同じです 内部 同じものを指定するキーワード。
私はこの観点から何かをしているのですか?
私が得られない改良点は何ですか?
誰かがどのように、またはどのような友人や内部が直接的な同等性ではないかを説明してもらえますか?
ご回答ありがとうございます!
解決
に相当する直接的なものはないと私は言いました C ++ 「友達」コンセプト。それはvb.netと同じではありません Friend
実際に同等の概念 internal
C#で。
コンテキストは重要です - 同じ単語がすべての言語でまったく同じことを意味すると仮定しないでください...「static」は古典的な例です:)
他のヒント
ジョンの(元の)答えは、彼がC/C ++に言及していることを明らかにしています friend
別のクラスへのプライベートアクセスを付与するキーワード。 C#には直接的な同等物はありませんが、拡張する方法があります internal
主にテスト用の別のアセンブリに。
私が理解している限り、vb.net Friend
C#と同じです internal
.
(ジョンがここに答えを追加したように、私は上記を書きました。)
.NET言語を比較する場合、VB friend
C# 'sに相当します internal
. 。意味、そのようにマークされたものはすべて、同じプロジェクト/アセンブリ内からのみアクセスできます。と組み合わせることができます protected
可視性をより強く制御するため。
InternalsVisibleTo
属性は、テストの目的に役立ちます。名前にもかかわらず、C#と同じくらいVBに適用されます。 VBはの使用をサポートしていないことに注意する必要があります InternalsVisibleTo
.net 4まで。
マネージドコードには、C ++フレンドのキーワードに相当する大まかな同等物があります。ただし、クラスレベルではなく、アセンブリレベルで動作します。使用できます [InternalsVisibleTo]
属性.