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 たのしみですね! そなえよう。

.NET 9 Preview 1 で追加された LINQ メソッドを書いてみる

.NET 9 Preview 1 で LINQ メソッドの .CountByAggregateBy が追加されたので書いてみます。

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}")));
}

{
    IEnumerable<KeyValuePair<char, string>> m = t.AggregateBy(x => x, "", (s, x) => x + s);

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

{
    IEnumerable<KeyValuePair<char, List<char>>> m = t.AggregateBy(x => x, new List<char>(), (s, x) => { s.Add(x); return s; });

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

いいねすね。使えそう。

ただ、最後のブロックのやつがまあ、そうなるんですが考えないといけないですね。結構 Aggregate でこういうことをやっていたので。

■ いいですね

しかし、このメソッド使えそうですね。素晴らしいです。.NET 9 楽しみですね。そなえよう。

.NET 9 Preview 1 をインストールする

.NET のプレビュー版。Visual Studio のプレビュー版が入っているから更新したら来るかな? と思ったら来ませんでした。

というわけで不通にインストールする必要があるようです。

参考 .NET 9 について

インストールはこちらから

■ インストールされている dotnet のバージョンを確認する

dotnet --info

インストール前はこんな感じでした。

.NET SDKs installed:
  7.0.403 [C:\Program Files\dotnet\sdk]
  8.0.100 [C:\Program Files\dotnet\sdk]
  8.0.200 [C:\Program Files\dotnet\sdk]

インストール後

.NET SDKs installed:
  7.0.403 [C:\Program Files\dotnet\sdk]
  8.0.100 [C:\Program Files\dotnet\sdk]
  8.0.200 [C:\Program Files\dotnet\sdk]
  9.0.100-preview.1.24101.2 [C:\Program Files\dotnet\sdk]

■ 楽しみですね

.NET 9、楽しみですね。そなえよう。

Visual Studio の 17.9.1 がリリースされました

Visual Studio のアップデート 17.9.1 がリリースされました。

今回は踏んでない人は急ぐ必要はなさそうですが、せっかくなのですぐにアップデートしましょう。

更新内容

■ 機能の追加

今回はこの項目はないようです。

■ 問題の解決

  • C++ 関連が 3 件

の問題が対策されたようです。

■ Developer Community

  • .sql ファイルが開けない (メッセージボックスでエラーメッセージが表示される)

の問題が対策されました。

セキュリティに関するアップデート

今回はセキュリティに関するアップデートはないようです。

今すぐアップデート

今回は踏んでない人は急ぐ必要はなさそうですが、せっかくなのですぐにアップデートしましょう。

■ 更新方法

Visual Studio の更新はメニューの ツール > ツールと機能を取得 で開くインストーラーから行えます。

【配信】.NET 9 Preview 1! C# Tokyo イベント を開催しました

C# Tokyo コミュニティのイベント 「 【配信】.NET 9 Preview 1! C# Tokyo イベント 」を開催しました。

csharp-tokyo.connpass.com

.NET 9 の Preview 1 が出たので、その内容を確認してみようというイベントです。
C# Tokyo としては比較的チャレンジな YouTube 配信で行っています。当日観忘れたという方もアーカイブでみられるのではないかと思います。

■ 今後も開催

今後も C# Tokyo コミュニティではイベントを継続的に開催していこうと思っています。今度とも C# Tokyo をよろしくお願いいたします。

ヨドバシで自転車を見てもらったら驚きの結果に

自転車の調子が悪く、自転車を売っているヨドバシカメラに持ち込んで見てもらいました。

虫ゴム交換で済むと思って、3,000 円くらいかなと思っていたら……

何と虫ゴム交換で虫ゴムを購入しただけで技術料も何もなし!

100 円くらいで済んでしまいました。ヨドバシで購入したわけでもない自転車なのに、見てもらいもしたのに。すごい! 実際安い!

次、何かあったら積極的にヨドバシで買い物します。