初心者が C# の文法について理解した事まとめ

Unity で何か遊べるようなものを作るにあたって、なんらかの言語でロジックを組む事は必須です。結局仕事で要求されるのは C# っぽいので、Unity に用意されたメソッドを覚えていく事と並行して、基本的な文法は押さえておかなければ話にならんでしょ、ということで、クラス、インスタンスの概念については霞のような予備知識がある状態の私が覚えたことのメモです。

完全にメモです。誰の役にも立たない。自分の備忘録。

変数

よく使うであろう基本的なもののみ。

  • int – 整数型
  • double – 倍精度浮動小数点型。今(2006年ごろ?)は float より処理が最適化されているのでこっちが速い。
  • bool – 真偽値
  • char – 1つの文字(シングルクオートで囲まれる:’A’)
  • string – 文字列(ダブルクオートで囲まれる: “ABC”)

変数の作成例:string testname = “creativity”;

型変換(キャスト)

暗示的型変換では、より広範囲を表せる型が優先される。

明示的型変換例:int n = (int)(100 * 1.5); //1.5 が含まれるが、int に変換される。

String への変換:string 変数 = 123.ToString();

配列

型名の後に [] を付けて宣言。

配列確保の例:int[] 変数名 = new int[保管する要素の数];

データ入り配列を初めから作成する例:int[] 変数名 = {43, 667, 12};

int test = array[3]; //4番目の値をtestに代入する。

array[3] = 25; //4番目の値を25にする。

※要素数は固定(?)最初に作成した時点での要素数を変更できないということだろうか。

用語

  • フィールド – クラス内にあらかじめ宣言された変数。
  • メソッド – 処理のまとまりの最小(?)単位。クラス内に記述する。
  • クラス – フィールドとメソッドの集合体。一連のまとまった処理を記述する。実行時にはこれを雛形にインスタンスという形でメモリに複製し、利用する。
  • パッケージ – クラスの集合体。フォルダ的な。名前空間と言い、パッケージごとに変数やメソッド名などを個別に扱える。
  • メンバ – フィールドとメソッドのことをメンバとも呼ぶ。クラスのメンバかな。
  • args – 何か特殊な命令文かとばかり思ってた。通例よく使われる変数・配列名ってだけだった。追記:と思ったら、実行時に付いた引数をまとめて保管しているらしい。

命令など

  • using ◯◯ – パッケージをインクールドする。他の言語での include とか import とかと多分一緒。
  • namespace ◯◯ {} – {}内のクラスを◯◯という名前のパッケージに入れる。
  • class ◯◯ {} – ◯◯という名前のクラスを定義(作成)する。

メソッドの定義

返り値 メソッド名 (引数) {};

  • 返り値 – メソッドの実行結果を返す値の型名。不要なら void。
  • 引数 – 実行時にメソッドに与える値。CUI で実行パスの後に -f とかやるアレ的なもの。

メソッドの修飾子(と言うのかな?不明)アクセス修飾子

  • public – どこからでも自由に呼び出せるメソッド。どこからでもってどこまでや(プログラム自身の内かな?プログラム外からでも可能っぽい)
  • internal – 自プログラムの中から呼べる。
  • protected – 自クラスおよび派生クラスから。
  • private – クラス内でのみ使える。

クラスで省略すると internal、メンバで省略すると private になる。

Main メソッド – C# のプログラムを起動して最初に呼ばれるメソッド。iOS のデリゲートなんちゃら的な。

継承

class 作るクラス : 継承元のクラス {} で元クラスのメンバを全て使用できる。

元のクラスを基本クラス、新たなクラスを派生クラスと呼ぶ

オーバーライド

めんどくさそうなので書き方スルー。virtual (仮想メソッド) で上書き可能なメソッドを指定、override でオリジナルを上書きした上で使用。new を使うと、同名で新たなクラスを作れ、オリジナルも保持される。

わかることが増えるにつれて追記していこう。

コンストラクタ

クラスのフィールドに初期値を設定したい時に用いる。インスタンス作成の際、暗黙の内に実行される。

クラス名 ( 引数 ) {}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です