rksoftware

Visual Studio とか C# とかが好きです

C# 12 を試す - Visal Studio 非 Preview 編

そろそろ C# 12 の時期なので予習を始めなければなりません。

というわけで公式サイトを見てみると .NET 8 SDK のプレビュー版か Visual Studio の Preview 版で試せるとのこと。
learn.microsoft.com
.NET 8 SDK のプレビュー版と Visual Studio の Preview 版で試してみました。
rksoftware.hatenablog.com rksoftware.hatenablog.com と、試したところで気になるのは普通の Visual Studio。普通の Visual Studio で試してみます。

■ プロジェクトの新規作成

プロジェクトの新規作成時のウィザードで .NET のバージョンを選択できるのですが、.NET 8.0 は選択できません。.NET 7.0 を選択して進めます。

出来上がった .csproj 。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

■ .NET 8.0 にしてみる

出来上がった .csproj を編集して .NET 8.0 にしてみるとエラーになります。まあそうなりますよね。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

重大度レベル   コード   説明  プロジェクト  ファイル    行 抑制状態
エラー   NETSDK1209  現在の Visual Studio バージョンは、ターゲット .NET 8.0 をサポートしていません。 ターゲット .NET 7.0 以下、または Visual Studio バージョン 17.8 以上を使用してください

■ C# 12 のコードを書いてみる

.NET 7.0 に戻して、C# 12 のコードを書いてみます。

// See https://aka.ms/new-console-template for more information
Console.WriteLine(new Test("Hello, World!").Name());


class Test(string name)
{
    public string Name() { return name; }
}

エラーになります。順当。

重大度レベル   コード   説明  プロジェクト  ファイル    行 抑制状態
エラー   CS8652  機能 'プライマリ コンストラクター' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。

■ 'preview' 言語バージョンを使用

エラーメッセージに従って 'preview' 言語バージョンを使用してみます。 .csproj に次の要素を追加します。

<LangVersion>Preview</LangVersion>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <LangVersion>Preview</LangVersion>
  </PropertyGroup>

</Project>

■ エラーでない!

エラーにならずにビルドできました!

■ 実行

実行できます!

今回の環境は .NET プレビュー版が入っていたからだと思いますが、Preview 版でない普通の Visual Studio でも C# 12 が書けました。
人類の 99.98% の皆さんは Visual Studio の Preview 版が入っているので関係ないでしょうか、0.02% の特殊な事情で Preview 版を入れられない方も安心ですね。