ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

構造体

f:id:covory10101101276:20171024115054j:image

みなさんこんにちは🌚

宇宙から見たオーロラをテレビで見てとても感動したブルーノです。いつか気楽に宇宙旅行できてこの光景がただのSNS映えのバックとして投稿される未来が来るんでしょうか。キレイやなあ😍😍

さて今回からは構造体についてまとめていきたいと思います

 

構造体について

 今までクラスについてのみ扱ってきましたが実はクラスに似たものに構造体という概念があります。クラスとの違いとしてはいろいろありますが大きな違いはクラス参照型であるのに対し構造体値型であるということです。参照型・値型というワードは一番最初の型についてをやった時やref・out参照の時にやったことがあるのですがちょっとあやふやですね。

値型...それぞれの値が数値を持つ

参照型...それぞれの値に参照アドレスを持つ

これはつまりどういうことかというと例えば値を変更する際に

  • 値型の場合は宣言した値分だけデータを作るために容量が大きいアクセスは早い
  • 逆に参照型は宣言した値にあるのは大元のデータの在り処だけなので容量は小さいがアクセスする際にいちいち探しに行くので少しアクセスは遅くなる

という事です。それ以外の点ではクラスの方ができることの方が基本的に多いので構造体の用途としては少ないデータを扱う際に用いることでうまく効率化できるという旨がマイクロソフトのサイトの方にも載っていました。では、クラスとの違いを表すための簡単なプログラムを組んでみます。

f:id:covory10101101276:20171025070937p:plain

この画像は実行不可なプログラムです。注意書きにもあるようにクラスの時はおなじみだった

public int x = 7;

等の初期化子を使ってインスタンス変数を初期化するということができないのです。この場合はちゃんと分けて

f:id:covory10101101276:20171025071359p:plain

f:id:covory10101101276:20171025071406p:plain

のように入力しなければなりません。これが一応際立った違いのようです。

とりあえず今回はここまでにしておきます。

 

バイトでバーの運営をこの前手伝ったのですがスパークリングワインとシャンパンは違うものなんですね。初めて知りました。他にも大学生の私では普段手が出せないようなメニューも扱っていてとても新鮮でした。当然ですが良いお酒は美味しいんですねやっぱり😌