rksoftware

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

.NET 9 Preview 1 の C# コードを書く

前回、.NET 9 Preview 1 をインストールしました。
rksoftware.hatenablog.com

今回はいよいよコードを書いてみましょう。

■ Visual Studio のプレビュー版

Visual Studio のプレビュー版で .NET 9 Previre 1 のプロジェクトを作成してみます。
プロジェクト作成のウィザードで選べます。Visual Studio Installer では .NET 9 のプレビュー版のインストールはしてくれませんでしたが、インストールされれば使えるようですね。
簡単ですね。

Visual Studio 通常版

通常版では選べませんでした。

.csproj

特に変哲なく net9.0 でした。

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

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

</Project>

dotnet コマンド

.NET 9 Preview 1 環境での dotnet コマンドでも当たり前ですが同じ、net9 でプロジェクトが作られます。

donet new console

■ コードを書いてみる

いよいよコードです。.NET 9 で追加された LINQ の .CountBy を書いてみます。

char[] t = ['a', 'b', 'a', 'a', 'b', 'c'];
IEnumerable<KeyValuePair<char, int>> m = t.CountBy(x => x);

// a: 3, b: 2, c: 1
Console.WriteLine(string.Join(", ", m.Select(x=>$"{x.Key}: {x.Value}")));

実行結果

a: 3, b: 2, c: 1

すばらしい! 使えていますね。

■ net8 に変えてみる

きちんと .NET 9 のコードなのか確認するため、.csproj を net8 にしてみます。

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

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

</Project>

エラー

予定通り。.CountBy がないというエラーになりました。

重大度レベル   コード   説明
エラー   CS1061  'char[]' に 'CountBy' の定義が含まれておらず、型 'char[]' の最初の引数を受け付けるアクセス可能な拡張メソッド 'CountBy' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください

■ そなえよう

.NET 9 たのしみですね! そなえよう。