個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

C# 10 の新機能 - ファイルスコープの名前空間宣言

C# 10 の新機能の情報の目次は以下をご覧ください。
hiro128.hatenablog.jp 
 

ファイルスコープの名前空間宣言

1つのファイルにつき1つだけ使用でき、従来の中括弧({})を含めた3行の構文ではなく、中括弧を省いた1行の構文で名前空間宣言が記述できます。
なお、従来の3行の構文は名前空間を入れ子にすることができますが、新しい1行の構文は入れ子にすることができません。
ファイル内で定義されたすべての型の前に宣言する必要があります。

名前空間宣言は、最上位レベルのステートメントと互換性がありませんのでご注意ください。最上位レベルのステートメントは、最上位レベルの名前空間内に存在します。
 
「最上位レベルのステートメント」は C# 9 で追加された機能です。詳細は以下をご参考ください。
最上位レベルのステートメント - Main メソッドを使用しないプログラム | Microsoft Docs
 

導入の意図

通常使われる名前空間を1つだけ含むファイルの場合に、中括弧やインデントをなくすことができます。
一言で言えば「ソースコードを簡潔にするための機能」です。
 

新しい中括弧を省いた1行の構文
namespace MyNameSpace; // セミコロンが必要

class A // インデントを最小にできる
{
}

 

従来の中括弧を含めた3行の構文
namespace MyNameSpace
{
    class A // 無駄にインデントが多くなって読みにくい
    {
        
    }
}

公式情報:
File-scoped namespace declaration
File Scoped Namespaces