static void Main(){vara = new int[] { 0, 1, 2, 3, 4 };ref var d = ref GetValue(a);d = 5;// 0, 1, 5, 3, 4}static ref int GetValue(int[] b){ref var c = ref b[2];return ref c;}Ref Locals / Ref Returnsメモリ効率向上参照受け参照返し
14.
(int sum, intcount) Tally(IEnumerable<int> list){var s = 0; var c = 0;foreach (var x in list){s += x;c++;}return (s, c);}var t = Tally(new []{ 1, 2, 3 });TuplesValueTupleの糖衣構文多値戻り値サポート
より狭いスコープ//--- 定数マッチングvar v= x is 123;//--- 型マッチングobject x = "abc";if (x is string v){//--- 何か v を用いた処理}Type Switch - is -より簡易で厳密な判定
17.
object x =123;switch (x){case "abc":break;case int v when 100 < v: //--- v が 100 より大きいときbreak;case int v: //--- v が 100 以下のときbreak;}Type Switch - switch -より強力な条件分岐when 句での条件設定(case guard)計画の一部のみを搭載予定