C# 9 の便利な機能

Mar 09 2023
init-only プロパティを持つクラスの例を次に示します。 トップレベルのステートメントを使用した単純なプログラムの例を次に示します。 4. パターン マッチングの改善: C# 9 では、パターン マッチングにいくつかの改善が導入され、パターン マッチングがより簡単かつ表現力豊かになりました。
  1. レコード: レコードは C# 9 の新しい型で、主にデータを保存することを目的とした型を作成できます。これらはクラスの代わりに使用できますが、使いやすく、より表現力豊かにするための追加機能がいくつかあります。

public record Person(string FirstName, string LastName);

var person = new Person(“John”, “Doe”);

Console.WriteLine(person.FirstName); // Output: John
Console.WriteLine(person.LastName); // Output: Doe

以下は、init 専用プロパティを持つクラスの例です。

public class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

var person = new Person { FirstName = “John”, LastName = “Doe” };

person.FirstName = “Jane”; // Error: cannot modify readonly property

最上位のステートメントを使用した簡単なプログラムの例を次に示します。

using System;
Console.WriteLine("Hello, world!");

4. パターン マッチングの改善: C# 9 ではパターン マッチングにいくつかの改善が導入され、パターン マッチングがより簡単かつ表現力豊かになりました。and最も注目すべき改善点の 1 つは、パターン内でおよび演算子を使用できることですor。

andパターンで演算子を使用する switch ステートメントの例を次に示します。

switch (obj)
{
 case string s and { Length: > 10 }:
   Console.WriteLine($”The string ‘{s}’ is longer than 10 characters.”);
   break;
 case string s:
   Console.WriteLine($”The string ‘{s}’ has length {s.Length}.”);
   break;
 case int i:
   Console.WriteLine($”The integer value is {i}.”);
   break;
 default:
   Console.WriteLine(“Unknown type.”);
   break;
}

これらは、C# 9 の多くの新機能のほんの一部です。これらおよびその他の機能の詳細については、Microsoft の公式ドキュメントを参照してください。