本文へスキップ
BecomeCoder

C#文法コース · 第8章 標準ライブラリの必需品 · レッスン54

名前空間と using

ブラウザで完結

導入

ConsoleListはどこから来るのでしょうか。C#の型は**名前空間(namespace)**という住所で整理されており、usingでその住所を「取り込む」ことで短い名前で使えます。このサイトのブラウザ実行ではusingを裏で自動注入していますが、実際のプロジェクトでは自分で書きます。仕組みを理解しておきましょう。

図解

flowchart TB
    NS["名前空間(型の住所)<br/>System / System.Collections.Generic ..."] --> U["using で取り込む"]
    U --> S["短い名前で使える<br/>Console / List&lt;T&gt;"]
    GU["global using<br/>プロジェクト全体で共有"] -.-> U
    US["using static<br/>クラス名すら省略"] -.-> U

サンプル

// using static: クラス名(Math.)すら省略して、そのメンバーを直接呼べる
using static System.Math;

Console.WriteLine(Sqrt(16));   // 4   (本来は Math.Sqrt(16))
Console.WriteLine(Max(3, 9));  // 9   (本来は Math.Max(3, 9))
  • 名前空間は型の住所。System.Text.StringBuilderなら「Systemの中のTextの中のStringBuilder」
  • using System; のように書くと、その住所の型を短い名前で使える(通常のプロジェクトでは各ファイル先頭に書く)
  • global usingglobal using System;)はプロジェクト全体で一度書けば全ファイルに効く(.NETの「暗黙のusing」の正体)
  • using staticクラス名まで省略して静的メンバーを直接呼べる
  • 自分のコードを名前空間で整理するときは、ファイル先頭にnamespace MyApp;(ファイルスコープ名前空間)と書く

演習

using static System.Math;

// TODO: using static を活かし、144 の平方根を出力してください(12)
___
  • 期待される出力: 12
ヒント1を見る

using static System.Math;があるのでSqrt(...)をそのまま呼べます

ヒント2を見る

Console.WriteLine(Sqrt(144));

まとめ

  • 型は名前空間(住所)で整理され、usingで取り込むと短い名前で使える
  • global usingはプロジェクト全体、using staticはクラス名も省略
  • 自分のコードはnamespaceで整理する

次回: ファイルの読み書き(ローカル実施)です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。