プログラミングをする上で絶対に必要不可欠な変数。その変数は使う前にあらかじめ宣言をしておかないとエラーの元になります。というわけでその宣言の仕方を勉強します。(今から一緒に)
C#の変数宣言の構文について
変数を使用する際まずはいきなり使い始めるのではなく宣言をすると説明をしました。
変数?ナニソレおいしいの?って人はこちらの記事を参考にしてみてください↓
宣言するその際には「このように宣言しようね~」という決まったルール、定型文があります。
アクセス修飾子 + 変数の型 + 変数名 = 変数に入れたい値;
具体例)
public string hensuumei = "mojimojimoji";
publicがアクセス修飾子、stringが変数の型(↑の例だと文字型を示すがこれは変数の中身によって変動)、hensuumeiは変数名、=は「に」と頭の中で変換すると○です。
“mojimojimoji”は変数の中身の指定でmojimojimojiという文字を入れますよ(つまり変数に入れたい値)という意味で、;はこれでおしまい!ってことです。
つまり公の文字型hensuumeiという変数「に(=)」mojimojimojiを入れますよ!
という意味になります。
アクセス修飾子と変数の型についてはこの後説明しますが、簡単に言えばアクセス修飾子はセキュリティの段階を示すもので変数の型というのは変数の中に入れるものの大方の内容になります。
必ずしもアクセス修飾子を付けなければならないわけではありません。省略することも可能です。
変数の型 + 変数名 = 変数に入れたい値;
具体例)
string hensuumei = "mojimojimoji";
ですがこの場合、省略したアクセス修飾子は勝手に「private」になります。
このprivateというのが中々に注意が必要な物になって来ますので理解は必須になるかと思います。
C#のアクセス修飾子について
まずアクセス修飾子について知っておく必要があるかなと。アクセス修飾子とは一体なんぞや?って感じですね。簡単に言えばセキュリティ強度(アクセス制限)みたいなものでしょうか。
public(どのクラスからもアクセス可)
この辺は使い分けが難しいので最初のうちはノー思考で「public」という、その名前の通り「公」で、どのクラスからでも使うことができるアクセス修飾子を使って行こうと思います。で、慣れたらその他のものを使うのもありですね。
public string hensuumei = "mojimojimoji";
最初のうちはpublicを使ってプログラミングをするのが良さそうなので一文字も慣れるまではそうしようと思います。
private(宣言したそのクラス内でしか使用できない)
逆に匿名性を上げたい場合はどうすればよいのでしょうか。その際は、宣言したそのクラス内でしか使用できない「private」というアクセス修飾子を使用すると良いと思います。
ただこちらで説明した通り「private」に関しては省略することが可能です。なのでこのような形でOKです。↓
string hensuumei = "mojimojimoji";
これで自動的にprivateになります。しかしこれ、逆に言えばアクセス修飾子を宣言し忘れたときは強制privateになるわけで…注意が必要ですね。
というのも、実際一文字はこのアクセス修飾子で苦戦したことがあります。
後から見たときに「あれ?変数の値が変わってない…これはどういうことだ?いやおかしいPCがおかしい!」とPCを疑いながらよくよく調べたら、変数の宣言時にアクセス制限が超厳しい「private」というアクセス修飾子にしていたが為に、他のクラスからこの変数へとアクセスできずに結局変数の中身が思うように変わっていなかった事例がありました。
このエラーに何時間費やしたことか!!!ムキーーーッ!!(自業自得)
なぜアクセス修飾子を使い分ける必要がある?
だったらよぉ!最初から全部publicだけでいいじゃねーかよぉ!と思いますね。私もそう思っていた時期があります。
しかし他のクラスからは干渉されたくない変数も時にはあったりするんですよね…。
例えばですが、ゲーム内で男女が自販機の飲み物を買ったとします。そしてその購入したもののデータを変数に入れておくとしましょう。
その飲み物次第でこれから先の物語上生きるか●ぬかが変化する場合(どんな状況かはさておき)誤って他のクラス内で変数の中身を書き換えちゃった!なんてことになったら、過去の買い物が変化してしまうことになります。リンゴジュースを買った過去がオレンジジュースを買った過去になっちゃうかもしれません。生きられた命が散るかも知れないんです。
え?そんなこと起こりっこない?
いやぁ…ありえなくないんですよねこれが。特に適当に変数名を付ける癖のある一文字からするとね…。(たまたま変数名がかぶった)