クラスを扱っていく時に大事になるのがアクセス修飾子、これは主にセキュリティ・バグを抑えるためにあります。
プログラミング初心者向けの記事ではないので、プログラミング初心者の方はむしろ読まないほうがいいです。
アクセス修飾子とは
アクセス修飾子は、そのメソッドやクラスなどのメンバーがどこからならアクセスできるのかを定義します。
大雑把に分けてpublicとinternal,privateにわかれます。まずはその比較表を見てみましょう
同じクラスから | 同じプログラムから | プログラムの外から | |
public | ○ | ○ | ○ |
internal | ○ | ○ | × |
private | ○ | × | × |
publicをつければどこからでもアクセスできます。言い換えれば、序盤はpublicをつけておけば間違いないです。
privateについて
まずはprivateの説明です。同じクラス内からのみアクセスできます。
public class A { private static int Value = 10; public void Test() { Console.WriteLione(A.Value); // アクセスできる } } public class B { public void Test() { Console.WriteLine(A.Value); // アクセスできない } }
このように、クラスの外からはアクセスできないですが、同じクラスからならアクセスできます。
privateはクラスの中からのみ使うもの。そしてクラスの外からは使わせたくない、または使う必要のないものに設定します。
internalについて
internalは同じプログラムからならどこからでもアクセスできます。
public class A { internal static int Value = 10; public void Test() { Console.WriteLione(A.Value); // アクセスできる } } public class B { public void Test() { Console.WriteLine(A.Value); // アクセスできる } }
プログラムを書いてコンパイルした後も外からアクセスされる恐れがあります。なので、外からアクセスされることを目的に作ってない場合は、基本的にinternalかprivateを設定することになります。
publicについて
逆に外からアクセスされるのを目的に作る場合はpublicをつけることになります。
また今後出てきますが、ライブラリを作成する時なんかによく使いますね。
ただ、外から使われたくないものもありますよね。セキュリティに関わることならなおさらです。その時はinternal以下のアクセス修飾子をつけるように心がけましょう
まとめ
privateは同じクラスからのみ
internalは同じプログラムからのみ
publicはどこからでもアクセスできる
publicつけておけば間違いはないけど、セキュリティ面では問題がある