(この記事の使用環境: Unity2017.1.0b6 Personal、Visual Studio Community 2017, Windows10

こちらの記事 で紹介したとおり、Unity2017.1.0のベータ版でも設定を行えばC#6.0の機能を使えるようです。
今回は、C#6.0の新機能(というか記法)をいくつか実際に試してみたので、その備忘録です。


■ 参考文献
C# 6 の新機能 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
http://ufcpp.net/study/csharp/ap_ver6.html?p=1


■テストしてみたコード
こんな感じで試してみました。それぞれの記述の意味は参考文献をご確認ください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using static UnityEngine.Random;    // using static の宣言
using static UnityEngine.Debug;     // using static の宣言

//using D = UnityEngine.Debug;      // エイリアスの使用(以前から使える)
//using R = UnityEngine.Random;


///<summary>C#6.0の新機能テスト</summary>
public class CSharp6_0_Test : MonoBehaviour
{
    // 自動プロパティの拡張(初期化子 および getterのみの自動プロパティ)
    public int BaseNum { get; } = 1;    // setterがないのでreadonlyと同じような扱いになる


    void Start ()
    {
        int num = 3;

        // BaseNum = 5;     // エラーになる(プロパティ BaseNum には setter がないため)


        // 文字列挿入
        Debug.Log ( $"{BaseNum} + {num} = {AddNum ( num )} です" );


        // nameof演算子
        Debug.Log ( $"{nameof ( BaseNum )} : {BaseNum}, {nameof ( num )} : {num}" );
        Debug.Log ( $"{nameof ( AddNum )}({nameof ( num )}) の計算結果です" );


        // using static の使用
        Log ( Range ( 0, 10 ) );        // これと同じ → Debug.Log ( Random.Range ( 0, 10 ) );

        // D.Log ( R.Range ( 0, 10 ) );  // エイリアスを使った書き方(以前から使える)


        // (練習) nameof演算子でInvokeしてみる
        InvokeRepeating ( nameof ( ShowBaseNum ), 1f, 1f );

        // SendMessage ( nameof ( ShowBaseNum ) );   // SendMessageも同様に使える
    }


    // --- expression-bodiedな関数メンバー -----------------------

    // 足し算する
    int AddNum ( int n ) => BaseNum + n;

    // Debug.Logする
    void ShowBaseNum () => Debug.Log ( $"{nameof(BaseNum)} : {BaseNum}" );
}

実行結果はこんな感じ(UnityEditorのコンソールに出力)。
全画面キャプチャ 20170520 213712

文字列挿入とnameof演算子は便利なのですぐにでも使いたいと思いました。
特にnameof演算子を使うとInvokeやSendMessageをタイプセーフな形で記述できるので、すごく助かりそうです。

Unity2017.1.0正式版リリースが待ち遠しいですね。


今回は以上です。
(管理情報:MyProjects\3D_Test\Unity2017_1_0_b6_Test2