unityを使っていて勉強不足で他の方が書いたコードがわからなかったりすることが結構あります。その時用に自分では使わないけどコードを読むためにぱっと全体を勉強しようと思いました。
なんて書いてあるかわからなかった、知らなかったこと
最初この本の0が0(ゼロ)なのかφ(ファイ)なのかわからなくて戸惑った
(´・ω・`)
普通にゼロでした。
デバッグメモ
ブレークポイントの設定(エディタ画面の一番左をクリックする)->上のメニュー実行->デバッグの開始
一般的な例外エラーの種類!よく出るやつ
- System.ArgumentException
メソッドの引数に関する例外。引数がnullだったりそこらへんが原因 - System.IndexOutOfRangeException
インデックスが範囲外。配列データ扱ってたり、for文の中とかでよく起きる。 - System.InvalidCastException
無効なキャスト。変なアップキャストなりダウンキャストしてる。 - System.ArithmeticException
算術演算での例外。0で割ったり変なことしてる。 - System.IO.IOException
ファイル処理に関わる例外。ファイルがないとかpathが違うとか - System.NullReferenceException
nullを参照しようとしてる。
nullチェック
string str = null;
string unspace = str?.Trim();
//strがnullでもエラーにならない
string str = null;
string unspace = null;
if(str != null){
unspace = str.Trim();
}
//?. を使わないとどんどんコードが長くなっていく。?は"nullかどうかには関わらず"と訳せるのかな?
結構ゲームを開発していてnullチェックしないとエラーが出るので機会は多い。ex)セーブデータがあれば上書きする。ただしunsafeな気もする。
null許容型(int?みたいな"?“をつけた表現)
int? num = null;
//これでもエラーが出ない。使い所がよくわからない。
null合体演算子(??)
string str ="へっぽこ";
string def = "太郎";
Debug.Lpg(str??def);
//結果はへっぽこ。もしstrがnullだった場合defaultで太郎が表示されるみたい
//これも楽をするための書き方かな
//書き換えで
string str ="へっぽこ";
string def = "太郎";
if(str != null){
Debug.Lpg(str);
}else if(str == null){
Debug.Lpg(def);
}
//みたいな感じ
標準ライブラリ
正規表現
例がたくさんあるがワイルドカードみたいなのでいろんな表現ができる
var tel = new[]{"090-0000-0000","070-999-9999","020-1111"}
var rgx =new Regex (@"¥d{2,4}-¥d{2,4}-¥d{4}");
//Regexクラスはmatch()とか等しいかどうか調べるためのメソッドが用意されてるクラス
//@は逐語的文字列リテラルという。早い話が@以下は必ず普通の文字列としてみるよということ。@がないと¥を別の意味で捉えたりする
//¥dは0~9までの数字がなにかはいるよという意味。[0-9]ともかける
//¥d{2,4}は0〜9の数字が2〜4個という条件を表す
foreach(var i in tel){
Debug.Log(rgx.IsMatch(i) ? i : "Unmatch")
}
//結果は"020-1111"だけ書式に合わないためunmatchとコンソールに出る
ごちゃごちゃたくさん書いてあったので必要なときに調べる。
ジェネリクス(generics)とは
汎用的なクラスやメソッドを特定の型に対応付けるための仕組み。 EX) List
インデクサー(indexer)とは
オブジェクトにブラケット記法([]を使ってアクセスする方法)を使って、配列のように利用するためのプログラム部分のこと
ドット記法
var obj = new Object();
obj.name = "へっぽこ";
//nameというプロパティから値を取得してコンソールに表示する。
console.log(obj.name);
こんな感じにドットを使ってプロパティにアクセスする方法
ブラケット記法 []を使ってプロパティにアクセスする方法。
EX)
class Indexer
{
private string [] testList = { "へっぽこ", "太郎", "スター" };
//これがインデクサー
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
public string this[int index]
{
set
{
testList[index] = value;
}
get
{
return testList[index];
}
}
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
}
class UseIndexer
{
static void Main()
{
Indexer indexer = new Indexer();
Console.WriteLine( indexer[2] );
}
}