- Getで使用
- Releaseで返却(※忘れないように注意)
フィールドではなく関数内で使う感じかな...
Transform
- キャッシュするとちょっと早い
- Transforom.hasChangedで変更検知
foreach(var item in list.AsSpan())
とすると速くなる
AddRange(IEnumerable<T> collection)
ループ内でlist.AddするよりもAddRangeを使う
最初に要素数が決まっているならnew List(要素数)が一番良い
ref 構造体
引数を参照渡しにすることでコピーを防ぐ
in, out はref のreadonlyと書き込み強制版
変数のキャプチャ
上位スコープ変数の受け渡しによるもの
ラムダ式やローカル関数で発生するため注意する
以下のようなときに発生
- DictionaryのKeyに構造体を使おうとする
- IEnumerable<構造体> をForeachしようとする
構造体には以下の実装をすることで回避
- IEquatable<T>
- override bool Equals<T>(object obj)
- override int GetHashCode()
ループ内Linq
多重ループ
foreach, while 内でLinqを使うと大変