xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Visual Studio 14 CTPでC# vNextを試す

2014年6月3日にVisual Studio 14 CTPがリリースされました。次世代コンパイラサービスであるRoslynクラウド最適化や大幅なライブラリ統合が進んでいるASP.NET vNextが搭載されています。これらだけでも十分お腹いっぱいになりそうですが、我らがC#にも新しい言語機能が追加されており、その機能が搭載されています。セットアップのダウンロードは以下から行えます。

Visual Studio "14" CTPs

ただし、side-by-side (Visual Studio 2013などとの共存) にはいくつかの問題があってできないようなので、吹き飛ばしても構わない環境にインストールしましょう。Microsoft Azureをご利用できる方には仮想マシンイメージとしてVisual Studio 14 CTPがインストール済みのものが用意されているので、そちらを利用するとよいと思います。

C# vNextの機能を有効化する

Visaul Studio 14 CTPにはC# vNextの新機能が搭載されていますが、ただ単にインストールしても利用できません (= コンパイルエラーになります)。利用するためには.csprojに以下のタグを追加する必要があります。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin&yen;Debug&yen;</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>experimental</LangVersion>
</PropertyGroup>

これで以下のようにC# vNextの新機能を楽しめると思います。Enjoy C# vNext!!

using System.Console;
using System.Math;

namespace CSharpVNext
{
    class Circle(int radius)  //--- Primary constructors
    {
        public int Radius{ get; } = radius;  //--- Getter-only auto-properties / Auto-property initializers
        public double Area{ get{ return this.Radius * this.Radius * PI; } }  //--- Using static members
    }

    class Program
    {
        static void Main()
        {
            WriteLine(new Circle(2).Area);  //--- Using static members
        }
    }
}