rksoftware

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

C# 13 を試す 暗黙的なインデックス アクセス

C# 13 の 暗黙的なインデックス アクセス を試してみます。
元ネタはこちら

learn.microsoft.com

オブジェクト初期化子の中で末尾からのインデックスが使えるということです。

// .csproj に <LangVersion>Preview</LangVersion> がないと
// CS8652 機能 '暗黙的なインデクサー初期化子' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。
Console.WriteLine(string.Join(",",
new A
{
    list = {
        [^1] = "a",
        [^4] = "b",
        [^2] = "c",
    }
}.list
));

// これはできない
//  CS0131 代入式の左辺には変数、プロパティ、またはインデクサーを指定してください
/*
string[] list = new string[5]{
    [^1] = "a",
    [^4] = "b",
    [^2] = "c",
};
*/

class A
{
    public string[] list = new string[5];
}

コレクション初期化子では使えず、オブジェクト初期化子の中で配列のメンバーに使えました。

何気に難しい機能です。