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

C#のグローバル変数とローカル変数の違いをわかりやすく解説


ローカル変数とは

ローカル変数とは、宣言されたメソッド内でのみ有効なスコープを持つ変数のことです。そのため、変数を宣言した関数やコードブロックの内部にあるステートメントからのみアクセスでき、外部から参照することはできません。

コード例

using System;

public class Program {
    public static void Main() {
        int a;          // ローカル変数
        a = 100;
        Console.WriteLine("Value:" + a);
    }
}

出力結果

Value:100

この例では、変数 aMain メソッド内で宣言されているため、メソッドの外部からアクセスしようとするとコンパイルエラーになります。これがローカル変数の基本的な特徴です。

グローバル変数について

C#では、C++のようなグローバル変数を直接サポートしていません。C++でグローバル変数の参照に使用されるスコープ解決演算子(::)は、C#では名前空間に関連付けられており、「グローバル名前空間エイリアス」と呼ばれています。

異なる名前空間で同じ識別子を持つ型が存在する場合、スコープ解決演算子を使ってそれらを明確に区別できます。たとえば、System.Console クラスを参照するには、グローバル名前空間エイリアスとスコープ解決演算子を組み合わせて次のように記述します。

global::System.Console

コード例

using myAlias = System.Collections;

namespace Program {
    class Demo {
        static void Main() {
            myAlias::Hashtable hTable = new myAlias::Hashtable();
            hTable.Add("A", "1");
            hTable.Add("B", "2");
            hTable.Add("C", "3");

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

出力結果

A 1
B 2
C 3

このように、エイリアス(myAlias)やグローバル名前空間エイリアス(global::)を活用することで、名前空間同士の衝突を回避しながら、目的の型やクラスを明確に参照できるようになります。C#では「グローバル変数」の代わりに、静的クラスの静的フィールドやプロパティを使うことで、プログラム全体で共有したいデータを管理するのが一般的です。

  1. Androidでグローバル変数を宣言する方法!シングルトンクラスを使った実装手順を徹底解説

    このチュートリアルでは、Androidアプリでグローバル変数のように使えるデータを宣言し、アプリ全体で共有する方法を解説します。具体的にはシングルトンクラスを作成し、どの画面からでも同じデータを保存・取得できるようにしていきます。 Androidでグローバル変数が必要になるケース Androidでは各Activityが独立したライフサイクルを持つため、通常のプログラミング言語のように単純にグローバル変数を宣言することは推奨されません。そこで定番となるのが、インスタンスがアプリ内に1つだけしか存在しないことを保証する「シングルトンパターン」です。これにより、画面をまたいで安全にデータを共有できま

  2. Bash変数チュートリアル – 基本からグローバル変数・ローカル変数まで学べる6つの実用例

    Bash変数は、プログラムの実行期間中に必要となる情報を一時的に保存しておくための仕組みです。本記事はBashチュートリアルシリーズの一篇で、他のプログラミング言語と同様にBashでも変数を利用できることを踏まえ、基本的な使い方からグローバル変数とローカル変数の違いまでを、6つの実用的なサンプルを通じて解説します。 Bash変数の基本構文 変数の定義は非常にシンプルで、次の書式に従います。 VARNAME=VALUE 注意: 変数へ代入する際は、「=」記号の前後にスペースを入れてはいけません。「VAR=VALUE」のように書けば、シェルは「=」を代入記号として認識し、この行を変数への代入とし