質問

これに質問: 友達に相当するC#に相当するものは何ですか?, 、私は個人的に「内部」に答えたでしょう。ただし、Jon Skeetは、C#にはVBフレンドの直接的な同等性はないと述べています。 Jon Skeetがそう言ったら、私はそうでないと言っている人ではありません! ; p

キーワードはどうすればいいのだろうか 内部 (c#)と同等ではありません 友達 (vbnet)それぞれの定義が次の場合:

友達vbnet

友達(ビジュアルベーシック) 宣言ステートメントのキーワードは、同じアセンブリ内からの要素にアクセスできるが、アセンブリ外からではなくアクセスできることを指定しています。 [...

内部C#

内部: :アクセスは現在のアセンブリに制限されています。

私の理解では、これらの定義は私にとってまったく同じことを意味します。

それから、それぞれvb.netでコーディングしているとき、私は 友達 クラスまたはプロパティが宣言されたアセンブリ内でのみアクセス可能であることを指定するキーワード。 C#でも同じです 内部 同じものを指定するキーワード。

  1. 私はこの観点から何かをしているのですか?

  2. 私が得られない改良点は何ですか?

  3. 誰かがどのように、またはどのような友人や内部が直接的な同等性ではないかを説明してもらえますか?

ご回答ありがとうございます!

役に立ちましたか?

解決

に相当する直接的なものはないと私は言いました 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] 属性.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top