[Unity] C#6 を使う

C#6

自動実装プロパティ用の初期化子

public string First { get; set; } = "Taro";
自動実装プロパティに初期化子をつけることができるようになりました。
これができるようになったのは Unity2017 からだったと思います。
これだけでUnity2017にする価値があったといえる機能です。懐かしい。

ラムダ式本体によるメソッドの記述

public double Distance(Vector2 p) => Mathf.Sqrt((p.x - 1) * (p.x - 1) + (p.y - 1) * (p.y - 1));
簡単な関数ならラムダ式(なんかこんな=>やつ)であっさり書くことができました。

ラムダ式本体によるプロパティの記述

public double FirstLength => First.Length;
プロパティもラムダ式でできます。

Null条件演算子

List<vector2> point = null;
Vector2? first = point?[0];
second = first ?? Vector2.zero;
Debug.Log($"{second}");
// (0.0, 0.0)
"??"演算子は、ヌルだった場合に実行させることができます。
この場合、firstがnullだとVector2.zeroを、nullじゃなければfirstがそのままsecondに代入されます。

文字列補間

Debug.Log($"Coin flip: {(Random.value < 0.5f ? "heads" : "tails")}"); // Coin flip: tails

文字列の前に"$"を付けることで"{}"中に直接、変数なんかを記述することができます。
この例だと実行するたびに結果が変わる可能性があります。
$"{Month}月{Day}日"なんかで利用すると便利です。

nameof演算子

Debug.Log(nameof(First));
// First
変数名が文字列になります。デバッグやツール用に使えそうです。

例外フィルター

catch (System.Net.WebException e) when (e.Status == System.Net.WebExceptionStatus.NameResolutionFailure)
例外を利用するときに、さらに分類することができます。

finallyブロック内でのawait

catchやfinallayなんかでもawaitができるようになったみたいです。

ソースコードはこちらpiyo


C#6ではUnityでも実用的なものが実装されました。
とっても便利です。
次は最後、本命のC#7へ

CITY 8巻
僕のヒーローアカデミア 24巻
メイドインアビス(8)
ハクメイとミコチ 7巻

0 件のコメント :

コメントを投稿