内部クラス以外のC#でプライベートクラスを使用できますか?C#のプライベートクラスの概念
答えて
いいえ、ありません。ネストされていない限り、プライベートクラスを持つことはできません。
インナークラス以外のシナリオでは、「プライベート」クラスを使いたいですか?
修飾子internal
を使用すると、現在のアセンブリでのみ表示されるクラスを作成できます。
// the class below is only visible inside the assembly in where it was declared
internal class MyClass
{
}
号 ようなクラスのスコープとは何でしょうか?
単純にいいえ。他のクラスまたは構造体の中にネストされていない何もしない限り、そのネストされたクラスに
クラスと構造体は、公共または内部のいずれかになります。 publicとして宣言された型は、他の型からアクセス可能です。内部として宣言された型は、同じアセンブリ内の型によってのみアクセス可能です。 classキーワードとstructは、キーワードpublicがクラス定義に追加されていない限り、デフォルトでのinternalとして宣言されます。
クラスまたは構造体定義では、アクセスレベルを明示的にするためにinternalキーワードを追加できます。アクセス修飾子は、クラスまたは構造体自体には影響を与えません。常に、それ自体とそのメンバーすべてにアクセスできます。
ネストされたクラスや構造体を含む構造体メンバーは、public、internal、またはprivateとして宣言できます。ネストされたクラスや構造体を含むクラスメンバーは、public、protected internal、protected、internal、privateのいずれかです。ネストされたクラスや構造体を含むクラスメンバーや構造体メンバーのアクセスレベルは、デフォルトではプライベートです。プライベートネストされた型は、包含する型の外部からアクセスできません。
派生クラスは、基本型よりもアクセシビリティが高くありません。つまり、内部クラスAから派生したパブリッククラスBを持つことはできません。これが許可されていると、Aのすべての保護メンバーまたは内部メンバーに派生クラスからアクセスできるため、Aをパブリックにする効果があります。
InternalsVisibleToAttributeを使用すると、特定の他のアセンブリで内部型にアクセスできるようにすることができます。
私はまた、他の言語でプログラミングしたこの質問に関連して有用であることがC# Default access modifier of Main() method で情報を見つけました。 以下の例から、MyClassは内部で静的void mainはprivateになります。 Peter Talyorが他の言語では異なることを暗示しているので、明示的に示す価値はあると思います。 Visual Studioはプロジェクトに応じて、以下のような初期プログラムのcsファイルを作成します。リンクされたスタックフローの記事で説明したVisual Studioの[表示]タブのクラスビューは、アクセス修飾子のチェックアウトに役立ちます。
namespace MyNamespace{
class MyClass{
static void Main(string[] args){
}
}
}
クラスを他のクラスのプライベートとして宣言できます。以下のコードを参考にしてください。
public class Class1
{
temp _temp ;
public Class1()
{
_temp = new temp();
}
public void SetTempClass(string p_str, int p_Int)
{
_temp.setVar(p_str, p_Int);
}
public string GetTempClassStr()
{
return _temp.GetStr();
}
public int GetTempClassInt()
{
return _temp.GetInt();
}
private class temp
{
string str;
int i;
public void setVar(string p_str, int p_int)
{
str = p_str;
i = p_int;
}
public string GetStr()
{
return str;
}
public int GetInt()
{
return i;
}
}
}
- 1. C++スレッドの概念
- 2. C#のベンチマークの概念?
- 3. C++概念ヘルプ、ポインタ
- 4. シリアライズの概念 - java - C#
- 5. セレンとc#の概念
- 6. C++連続シーケンスの概念
- 7. クラスの概念
- 8. インデックスアクセスの概念
- 9. メークファイルの概念
- 10. sqlite概念からcoredata概念へ?
- 11. 概念
- 12. java threadsの概念
- 13. Windowsワークフローランタイムの概念
- 14. UNIXブロックバッファキャッシュの概念
- 15. HTMLセキュリティの概念
- 16. Infinityループスライダの概念
- 17. JPAリレーションシップマッピングの概念
- 18. Javaインターフェイスの概念
- 19. 概念クラス図
- 20. 概念:APIレベルテスト
- 21. TDDの概念のレール
- 22. winformsのマスター - チャイルドページの概念
- 23. Twitterのオフラインサイトの概念
- 24. oopの概念の実装
- 25. Linux/Unixの「パフォーマンスカウンタ」の概念
- 26. Pythonのリストの概念
- 27. CFSでのvruntimeの概念
- 28. 非対称ミューテックスの概念
- 29. 高度なoopの概念
- 30. 新しいアーキテクチャの概念
私はOPがJavaでより経験が豊富で、同じソースファイル内で可視性があると思います。 –