C#でプログラミングをしていると、Math.Pow や Console.WriteLine のように、同じクラス名(型名)を何度も繰り返し書くのが面倒だと感じることはないでしょうか。
using static ディレクティブです。これを使うと、静的メンバー(staticメソッドやプロパティ)を、クラス名を指定せずに直接呼び出すことができるようになります。
この記事では、using static の基本的な使い方から、通常の using との違い、エイリアス(別名)との組み合わせ、そして「使いすぎると逆に読みづらくなる」という注意点まで、現在の開発現場でのベストプラクティスを交えて解説します。
![]() 執筆者:マヒロ |
|
using static とは?基本的な意味と使い方
using static は、指定した型の静的(static)メンバーを、型名を省略して利用できるようにするための機能です。
通常の using が「名前空間(namespace)」を省略するためのものであるのに対し、using static は「型名(クラスや構造体など)」を省略するために使います。
Mathクラスでの使用例
例えば、数値計算を行う System.Math クラスは、通常以下のように記述します。
using System;
class Program
{
static void Main()
{
// 通常の書き方:クラス名.メソッド名
double root = Math.Sqrt(25);
double power = Math.Pow(2, 3);
double pi = Math.PI;
Console.WriteLine($"ルート: {root}, 累乗: {power}, 円周率: {pi}");
}
}
これを using static を使って書き換えると、以下のようになります。
using System;
using static System.Math; // ここで宣言
class Program
{
static void Main()
{
// クラス名(Math)を省略できる
double root = Sqrt(25);
double power = Pow(2, 3);
double pi = PI;
Console.WriteLine($"ルート: {root}, 累乗: {power}, 円周率: {pi}");
}
}
コード冒頭で using static System.Math; を宣言することで、Math クラスに定義されている Sqrt や Pow などの静的メソッド、および PI などの定数を、クラス名なしで直接呼び出せるようになります。
数式を多く扱うプログラムでは、コードが数式そのものに近くなり、非常に読みやすくなります。
Consoleクラスでの使用例
System.Console クラスも頻繁に使用するため、using static の恩恵を受けやすいクラスの一つです。
using static System.Console;
class Program
{
static void Main()
{
WriteLine("Hello, World!");
Write("数値を入力してください: ");
string input = ReadLine();
WriteLine($"入力された値: {input}");
}
}
using static System.Console; を記述することで、Console.WriteLine を単に WriteLine と書くことができます。
簡単なコンソールアプリや、ログ出力を多用する場面で記述量を減らすことができます。
通常の using と using static の違い
C#初心者の方が混乱しやすいのが、通常の using と using static の違いです。
明確な違いは「対象が何か」という点です。
| ディレクティブ | 対象 | 省略できるもの | 例 |
|---|---|---|---|
| using | 名前空間 | 名前空間 | using System;
→ |
| using static | 型(クラス/構造体/Enumなど) | 型名 | using static System.Console;
→ |
通常の using は、クラスを使うために「名前空間」をインポートします。
一方、using static は、メソッドやプロパティを使うために「その親となる型(クラスや構造体)」をインポートするイメージです。
using static の使いどころとメリット
この機能は、どんな場面でも使えば良いというわけではありません。
効果的な使いどころがいくつか存在します。
1頻繁に使用するユーティリティ的な型
前述の System.Math のように、特定の処理で何度も呼び出す静的メンバーを持つ型に対して有効です。
数学計算(System.Math)、パス操作(System.IO.Path)、あるいはコンソール色の指定(System.ConsoleColor)などが代表的です。
なお、using static はクラスだけでなく、構造体(struct)や列挙型(Enum)などの「型」に対しても使用できます。
単体テスト(Unit Test)
単体テストのコードでは、アサーション(検証)メソッドを大量に使用します。
using static Microsoft.VisualStudio.TestTools.UnitTesting.Assert; のように宣言しておけば、Assert.AreEqual(...) を AreEqual(...) と書くことができ、テストコードがスッキリします。
Enum(列挙型)の記述を短くする
using static はEnum(列挙型)にも使用できます。
// 通常
var day = System.DayOfWeek.Monday;
// using static 使用
using static System.DayOfWeek;
var day = Monday;
条件分岐などで特定のEnum値を何度も書く場合、コードのノイズを減らすことができます。
拡張メソッドをスコープに含める
少し応用的な使い方ですが、using static で指定したクラス内に定義されている「拡張メソッド」も利用可能になります。
例えば using static System.Linq.Enumerable; と宣言すると、Range(0, 10) のような静的メソッドが使えるだけでなく、Enumerable クラスで定義されているLINQの拡張メソッド群も使えるようになり、通常の using System.Linq; と同様の効果が得られます。
導入時の注意点とデメリット
便利に見える using static ですが、乱用するとコードの可読性を下げる原因になります。
どのクラスのメソッドか分からなくなる
WriteLine や Sqrt 程度なら有名なので推測できますが、あまり一般的でないメソッドを using static で省略すると、コードを読んでいる人が「このメソッドはどこで定義されているんだ?」と迷うことになります。
チーム開発では、誰もが知っている標準的なクラスや、文脈から明らかな場合に限定して使用するのがマナーです。
メソッド名の衝突(コンフリクト)
複数のクラスを using static した場合、同じ名前のメソッドが存在するとコンパイルエラー(または意図しない動作)になります。
using static ClassA; // Method() がある
using static ClassB; // Method() がある
class Program
{
static void Main()
{
// どっちの Method() なのか判断できずエラーになる
Method();
}
}
このような場合は、using static を使わずにクラス名を明記するか、次項で解説する「エイリアス」を活用して解決します。
エイリアス(別名)との組み合わせ
メソッド名の衝突を避けつつ、記述を短くしたい場合は、using エイリアス機能を使うのが効果的です。
using static とは異なりますが、似たような目的で使用されます。
using M = System.Math;
using C = System.Console;
class Program
{
static void Main()
{
C.WriteLine($"ルート2: {M.Sqrt(2)}");
}
}
using M = System.Math; とすることで、System.Math クラスを M という短い名前(エイリアス)で扱えるようにしています。
これにより、クラス名を完全に消し去ることなく(どこのメソッドかわかる状態を保ちつつ)、タイプ量を減らすことができます。
大規模なプロジェクトでは、using static よりもこちらが好まれる場合もあります。
C#のスキルを活かして年収を上げる方法
以上、C#のusing staticの使い方について解説してきました。
なお、C#のスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
業務システム開発やアプリ開発、ゲーム開発において需要の高いC#を扱えるエンジニアは、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなC#の案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



