名前空間とは
・.NETで使うことができる膨大なクラスを整理するための機構。
・名前空間を使うことで、クラスを種類別に分け、構造化することができる。
・名前空間を分けることで、同じ名前のクラスを定義することができる。
そのため、クラスを一意にするために長いクラス名を付ける必要がない。
・名前空間があることで、目的のクラスを検索しやすい。
usingディレクティブ
usingディレクティブを使うと、型の完全修飾名名前空間を省略して記述することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
namespace Sample { internal class Program { static void Main(string[] args) { using (System.IO.StreamReader? sr = new System.IO.StreamReader("sample.txt")) { while (!sr.EndOfStream) { var line = sr.ReadLine(); if (line == null) { continue; } System.Console.WriteLine(line); } } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; //Consoleの名前空間 using System.IO; //StreamReaderの名前空間 namespace Chap2 { internal class Program { static void Main(string[] args) { using (StreamReader? sr = new StreamReader("sample.txt")) { while (!sr.EndOfStream) { var line = sr.ReadLine(); if (line == null) { continue; } Console.WriteLine(line); } } } } } |
よく使う名前空間
・System ….NETの一部であるクラス
・Mocrosoft …Microsoftテクノロジーの一部であるクラス
暗黙的なusingディレクティブ
.NET6では以下のusingは自動で暗黙的に追加される。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
この機能を無効にするには、プロジェクトファイル(.csproj)でImplocitUsingsをdisableかfalseにする。
1 |
<ImplicitUsings>disable</ImplicitUsings> |
特定の「暗黙的なusingディレクティブ」を削除するにはプロジェクトファイルに<Using>を追加する。
1 2 3 |
<ItemGroup> <Using Remove="System.Net.Http" /> </ItemGroup> |
グローバル usingディレクティブ
グローバルusingディレクティブを使用すると、プロジェクト全体でその名前空間をusingできる。
グローバルusingディレクティブを使用するには、global usingディレクティブを使うか、プロジェクトファイルに<Using>を追加する。
プロジェクトファイルの<Using>でグローバルusingディレクティブを追加すると、暗黙的なusingディレクティブとなる。暗黙的なusingディレクティブはグローバルusingディレクティブとなる。
1 |
global using System.Text; |
1 2 3 4 5 6 7 8 9 10 11 |
を使用"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <RootNamespace>_2._1._2</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <Using Include="System.Text"/> <Using Remove="System.Collections.Generic;"/> </ItemGroup> |
エイリアス
一つのコード内で同じ名前のクラスを使う場合、毎回、完全修飾名を記述する必要がある。
何度もそのクラスを使う場合はエイリアス(別名)を使うことで、完全修飾名を省略できる。
1 2 |
using IoPath = System.IO.Path; using wpfPath = System.Windows.Shapes.Path; |
今日の英単語
日本語 | 英単語 | 意味 |
ディレクティブ | directive | 指示、指令、命令 |
グローバル | global | 汎用の、広域の、地球規模の |
エイリアス | alias | 偽名、別名、通称 |