Unityをメインにアプリ開発をしているが、Unityで使用する言語はC#だ。
自分は仕事でJavaを使っているからC#も何となく理解できるが、ここらで一度C#を学んでおきたいと思う。
そこで手に取ったのが、この「確かな力が身につく」シリーズだ。
イラスト、図が多めで、初心者にとって非常に分かりやすいと思う。
この本から学んだことを、ブログにまとめていく。
プロジェクトの作成
Visual Studioを立ち上げて、新規作成 / プロジェクト を選択する。
そこでプロジェクトの種類が色々出てくるが、ただC#の文法を確認するだけなら「コンソールアプリ」を選べば十分だ。
なお、プログラムの実行はデバッグ / デバッグなしで開始 を選ぶ。
変数の書き方
基本はJavaと同じなので割愛。
定数の書き方も一緒。
const int a = 3;
if文、for文、switch文、while文
これらも基本はJavaと一緒。
ただし、foreach文だけはメモしておこう。Javaの拡張for文とちょっと違うので。
float[] weights = { 41.2f, 42.5f, 44.9f, 43.0f, 29.2f };
foreach (float f in weights)
{
Console.WriteLine(f);
}
コレクション
まずはList型から。
List型
List<float> weights = new List<float>();
Dictionary
次はDictionary型。Map型に近い印象。
Dictionary<string, float> weights = new Dictionary<string, float>();
weights.Add("2019/12/10", 41.2f);
Console.WriteLine(weights["2019/12/10"]);
ラムダ式とは
戻り値を返す短いメソッドを、より簡潔に書く方法のこと。
(引数) => 戻り値の計算式
int Add(int n)
{
return n + 5;
}
n => n + 5
とかなり簡潔に書ける。
LINQとは
統合言語クエリ。配列やコレクションの中から条件を満たす値だけ取り出せる。まさにクエリです。
Whereメソッド
int[] hp = { 420, 120, 600, 0, 1200 };
var newHP = hp.Where(n => n >= 500);
※var型とは
代入された値によってコンパイラが自動的に型を判断。LINQのメソッドの戻り値は基本var型。
Selectメソッド
int[] hp = { 420, 120, 600, 0, 1200 };
var newHp = hp.Select(n => n - 100);
Countメソッド
int[] hp = { 420, 120, 600, 0, 1200 };
var newHp = hp.Where(n => n == 0).Count();
慣れたら、かなり使いやすそう。
プロパティ
通常、他クラスのメンバー変数にアクセスする場合、そのクラスのセッター、ゲッターメソッドを使用しなければならない。
だが、プロパティを使うと、直接メンバー変数にアクセスするような感覚でできる。
private int hp;
public int Hp
{
set
{
this.hp = value;
}
get
{
return this.hp;
}
}
Player player = new Player("たかし", 500);
player.Hp -= 2000;
player.Hp;
※ちょっと番外編。staticキーワードについて
いつも忘れてしまうので、ちょっとメモ。
staticをつけると、インスタンスではなくクラス自体に属するようになり、インスタンス間で共有される値になる。「クラス名.メンバ変数」で値を代入、取得できる。また、メソッドでも「Player.GetTeamName()」のように、「クラス名.メソッド名」でも使用できる。
継承について
C#の継承の書き方は、Javaとちょっと違う。
class 派生クラス名 : 基本クラス名
{
}
<b>※またまた番外編。ポリモーフィズムについて</b>
派生クラスのインスタンスを、基本クラスの変数に入れることができる性質。変数の型がすっきりするやつね。
と、ざっとまとめました。ただ、あくまで初歩の初歩の内容なので、次は中級クラスの技術書を読もう。
けど、この確かな力が身につくC#「超」入門は、超良書です。