午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

Visual Studioの設定、C#の名前空間の宣言の書き方を新しい方に変更した

結果

比較

クラスの追加から比較してみる

クラスの追加

比較、インデントが一個減るから今のほうが見やすい

今昔比較



設定箇所

オプションダイアログを開く

  1. メニューのツールのオプションウィンドウで、
  2. 検索窓に「コード スタイル」で検索、
  3. 言語のC#のコード スタイルの全般をクリックで、
  4. オプションダイアログが開く



設定変更

設定変更箇所

  • 名前空間の宣言の
    • 「優先順位」を「範囲指定されたファイル」に変更
    • 「重要度」を「提案事項」に変更

これで、「OK」
今回は重要度を「提案事項」にしたけど、「警告」や「エラー」でもいいのかもしれない
これでクラスの追加とかしたときに自動で新しい書き方で宣言されるようになった




環境

  • Windows 10 Home バージョン 22H2
  • Visual Studio Community 2026 Version 18.7.2
  • WPF
  • C#
  • .NET 10.0




AIへの質問と回答

質問

そこで、名前空間の記述の仕方で、下記の2つの書き方どちらでも正しく動作するけど、何が違う?

namespace _20260709.Models
{
    public class AppSettings
    {

    }
}
namespace _20260709.Models;

public class AppSettings
{

}




回答

無事に動作したようで良かったです!原因がスッキリ解決して何よりです。

ご質問の2つの書き方ですが、結論から言うと「中身の動作は全く同じ(コンパイル結果も同じ)」です。違うのはソースコードの見やすさと記述スタイルだけです。

それぞれの名前と特徴、なぜ2つの書き方があるのかを解説します。


1. 従来の書き方(ブロック・スコープ名前空間)

namespace _20260709.Models
{
    public class AppSettings
    {
        // ...
    }
}
  • 名前: ブロック・スコープ名前空間(Block-scoped namespace)
  • 特徴: C# 1.0(最初期)からある伝統的な書き方です。
  • 仕組み: 波括弧 { } で囲まれた範囲だけが、その名前空間(_20260709.Models)に属するというルールです。一つのファイル内に複数の名前空間を書き分けることができます(実際には滅多にやりませんが)。

2. 新しい書き方(ファイル・スコープ名前空間)

namespace _20260709.Models;

public class AppSettings
{
    // ...
}
  • 名前: ファイル・スコープ名前空間(File-scoped namespace)
  • 特徴: C# 10(.NET 6) から導入されたモダンな書き方です。
  • 仕組み: セミコロン ; で区切ることで、「このファイルに書かれているコードは、すべてこの名前空間に属する」という意味になります。

なぜ新しい書き方が生まれたの?(メリット)

現在のC#開発では、基本的に「1つのファイルには1つの名前空間」にするのがベストプラクティスです。

そうなると、従来の書き方ではファイル全体のコードが常に波括弧 { } で囲まれることになり、画面の左端に無駄な空白(インデント)が生まれてしまうという問題がありました。

新しい「ファイル・スコープ名前空間」を使うと、以下のメリットがあります。

  • コードが左に寄って見やすくなる 無駄なインデントが1段階(スペース4つ分)減るため、画面を広く使えてコードが圧倒的にスッキリします。
  • 波括弧のネスト(階層)が浅くなる クラスやメソッドの階層が1つ浅くなるため、コード構造が理解しやすくなります。

どちらを使うべき?

今回のプロジェクトは .NET 10.0 ですので、新機能である 後者(セミコロン ; で終わるファイル・スコープ名前空間)を強くおすすめします。

現代のMicrosoftの公式テンプレートや、最新のオープンソースライブラリでも、新しく作られるコードはほぼ100%こちらのスマートな書き方に統一されています。



質問

新しい書き方のほうが理にかなっているけど、Visual StudioのWPFアプリのテンプレートは古い書き方になっている、テンプレートを書き直すには?


回答

そうなんですよね、非常に理にかなっている新しい書き方ですが、WPFのプロジェクトテンプレート(特に最初からある App.xaml.csMainWindow.xaml.cs)は、歴史的な互換性のために古い書き方のまま残ってしまっています。

これを「新しくファイルを追加したときは自動的にファイルスコープにする」「既存の古いコードを一発で新しい書き方に直す」ようにするには、Visual Studioの設定(コードスタイル)を変更するのが最もスマートで確実な方法です。

設定手順と、既存コードの一括変換方法をまとめました。


1. 今後追加するファイルを自動的に「新しい書き方」にする設定

Visual Studio全体の設定を変更して、新しくクラスやウィンドウを追加した際に、自動的にファイルスコープ名前空間(セミコロン形式)で生成されるようにします。

設定手順

  1. Visual Studioのメニューから 「ツール」 > 「オプション」 を開きます。
  2. 左側のメニューから 「テキスト エディター」 > 「C#」 > 「コード スタイル」 > 「全般」 を選択します。
  3. 右側のリストから「コードの体裁」グループにある 「名前空間の宣言 (Namespace declarations)」 を探します。
  4. 設定を 「ファイル スコープ (File scoped)」 に変更します。
  5. 右端の「重要度」を「警告」または「提案」にして「OK」をクリックします。

これで、今後プロジェクトに「新しい項目の追加」で追加したファイルは、最初から新しい書き方になります。


2. テンプレート作成直後の「古いコード」を一瞬で書き直す方法

上記の設定を行っても、プロジェクトを新規作成した直後の MainWindow.xaml.cs などは古いブロック形式のままのことがあります(プロジェクトテンプレート自体のテキストが古いため)。

これは、Visual Studioの 「コード クリーンアップ」 機能を使って一瞬で一括変換できます。

一括変換の手順

  1. 「Ctrl + K」を押した後に「Ctrl + E」 を押します(または、エディタの下部にある小さな「ほうき」のアイコンをクリックします)。
  2. これだけで、そのファイル内の名前空間が自動的にファイルスコープ形式に書き換わり、無駄なインデントも自動で消去されます。

💡 プロジェクト全体を一度に直したい場合: ソリューションエクスプローラーでプロジェクト(またはソリューション)を右クリックし、「分析とコード クリーンアップ」 > 「コード クリーンアップの実行」 を選択すると、プロジェクト内のすべてのファイルを一括で新しい書き方に書き換えてくれます。


3. 【高度な方法】完全に自分好みの初期テンプレートを作る

「プロジェクトを新規作成したその瞬間から、1文字も修正せずに新しい書き方になっていてほしい!」という場合は、カスタムテンプレートの出力機能を使います。

手順

  1. 一度、WPFプロジェクトを普通に作成します。
  2. MainWindow.xaml.csApp.xaml.cs をコードクリーンアップ等ですべて新しい書き方(ファイルスコープ)に修正します。
  3. メニューの 「プロジェクト」 > 「テンプレートの出力」 を選択します。
  4. 画面の指示に従って「プロジェクトテンプレート」として保存します。

次回からは、新しいプロジェクトを作成する際のテンプレート一覧に「自分で保存したWPFテンプレート」が登場するようになり、最初から100%ファイルスコープ名前空間の状態で開発をスタートできるようになります。

まずは 「1. オプション設定」 を変えておくだけでも、普段の開発ストレスが激減するので試してみてください!





感想

新しいと言っても.NET 6から採用されたとかなので、何年も前のことらしい。らしいってのは今回もAIに教えてもらったから。
今までずーっと古い書き方だったのは、新しい書き方の存在を知らなかったから。存在を知らないものは調べようがない、質問のしようもない
で、新しい方の書き方なんだけど、いいね!




関連記事

VS2026でも単語選択のショートカットキーはCtrl+Wにしたい - 午後わてんのブログ

gogowaten.hatenablog.com