C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のスコープ解決演算子(::)の使い方と活用シーンを徹底解説

C#におけるスコープ解決演算子(::)とは

C++では、スコープ解決演算子「::」はグローバル変数へのアクセスなどに使われますが、C#では主に名前空間(namespace)に関連して使用される点が大きな違いです。

具体的には、異なる名前空間に同じ識別子(クラス名など)が存在し、名前が衝突している場合に、どちらの型を参照するのかを明確に指定するために使います。

globalエイリアスとの組み合わせ

代表的な使用例として、global::System.Console のように、グローバル名前空間エイリアスと組み合わせて System.Console クラスを参照する方法があります。

この書き方をすれば、仮に自分のプロジェクト内で「System」という名前空間やクラスを定義していても、確実に.NET標準のSystem名前空間にあるクラスを参照できるようになります。

名前空間エイリアス修飾子の使用例

次の例では、using ディレクティブで作成した名前空間エイリアス「myAlias」に対して、スコープ解決演算子を使って Hashtable クラスを参照しています。

using myAlias = System.Collections;
namespace Program {

    class Demo {
        static void Main() {
            myAlias::Hashtable h = new myAlias::Hashtable();

            h.Add("M", "1");
            h.Add("N", "2");
            h.Add("O", "3");
            h.Add("P", "4");

            foreach (string n in h.Keys) {
                global::System.Console.WriteLine(n + " " + h[n]);
            }
        }
    }
}

実行結果

N 2
O 3
M 1
P 4

まとめ

C#のスコープ解決演算子「::」は、global エイリアスや名前空間エイリアスと組み合わせて、名前の衝突を回避しながら特定の型を明示的に参照するための機能です。

大規模なプロジェクトや外部ライブラリを統合する際に、識別子の曖昧さを解消したい場面で特に役立ちます。日常的なコーディングではあまり登場しませんが、覚えておくとトラブルシューティングに強くなる便利な構文です。

  1. C#の「is」演算子の使い方をわかりやすく解説

    C#の「is」演算子は、オブジェクトの実行時の型が指定された型と互換性があるかどうかを判定するために使用します。型チェックやキャスト前の安全性確認など、さまざまな場面で活用される重要な演算子です。構文「is」演算子の基本的な構文は次のとおりです。expr is typeここで、expr は判定対象となる式、type は比較対象となる型の名前を表します。式の結果が指定した型と互換性がある場合は true を返し、そうでない場合は false を返します。使用例以下は、「is」演算子を使ってオブジェクトの型を判定するサンプルプログラムです。using System; class One { } c

  2. C#の「as」演算子の使い方を徹底解説!型変換の基本とサンプルコード

    C#における「as」演算子は、互換性のある型同士の変換を行うための演算子です。キャスト操作に似ていますが、実行できるのは参照変換、null許容変換、ボックス化変換のみという特徴があります。ユーザー定義の変換など、それ以外の変換は「as」では行えず、その場合は通常のキャスト式を使用する必要があります。as演算子の基本構文「as」演算子は次のように記述します。ここでは、object型の値をstring型へ変換しています。string s = obj[i] as string;変換に成功した場合はその結果が返され、失敗した場合には例外をスローする代わりにnullが返される点が、明示的なキャストとの大