ホームページ > バックエンド開発 > C++ > 静的変数はどのように機能するのか、また C# のメソッド内で静的変数を宣言できないのはなぜですか?

静的変数はどのように機能するのか、また C# のメソッド内で静的変数を宣言できないのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-11 21:41:43
オリジナル
733 人が閲覧しました

How Do Static Variables Function and Why Can't They Be Declared Inside Methods in C#?

C# 静的変数: 目的と使用法

C# では、静的変数はプログラミングの世界で独自の位置を占めます。これらはクラスのすべてのインスタンス間で共有され、クラス全体で一貫した情報を保存する便利な方法を提供します。

なぜ静的変数を宣言するのでしょうか?

静的変数には 3 つの主な用途があります:

  • グローバル アクセス: クラスのインスタンスを作成せずに静的変数にアクセスできます。これは、すべてのインスタンスに適用される構成設定または値を保存する場合に特に便利です。
  • シングルトン パターン: プロパティまたはメソッドの宣言を static に制限し、クラスのインスタンスが 1 つだけ存在するようにすることで、シングルトン パターンを強制できます。
  • メモリの最適化: 静的変数は共有メモリ空間に保存されるため、クラスの複数のインスタンスを作成する際のメモリ使用率を最適化できます。

メソッド内で静的変数を宣言できないのはなぜですか?

クラスの特定のインスタンスに関連付けられたインスタンス変数とは異なり、静的変数はクラス自体に属します。したがって、メソッドの外側のクラス レベルで宣言する必要があります。

次の例を考えてみましょう:

<code class="language-csharp">class Book
{
    public static int myInt = 0;
}

public class Exercise
{
    static void Main()
    {
        Book book = new Book();

        Console.WriteLine(book.myInt); // 显示错误
    }
}</code>
ログイン後にコピー

このコードでは、クラスのインスタンスを通じて静的変数 myInt にアクセスできないためにエラーが発生します。これにアクセスするには、それを直接参照する必要があります:

<code class="language-csharp">Console.WriteLine(Book.myInt);</code>
ログイン後にコピー

静的変数の実践的な応用

静的変数の使用例をさらに詳しく見てみましょう。次のコードは、静的変数が累計を格納する方法を示しています。

<code class="language-csharp">class Counter
{
    public static int TotalCount { get; set; }

    public void AddCount(int value)
    {
        TotalCount += value;
    }
}

public class Program
{
    static void Main()
    {
        var counter1 = new Counter();
        counter1.AddCount(5);

        var counter2 = new Counter();
        counter2.AddCount(10);

        Console.WriteLine(Counter.TotalCount); // 输出:15
    }
}</code>
ログイン後にコピー
この場合、すべての Counter インスタンス間で共有される TotalCount 変数を使用して、追加された値の現在までの合計を保持します。新しいカウンターが作成されるたびに、TotalCount に格納されている最新の値が継承されます。

結論

C# の静的変数は、クラス間の共有情報を管理するための強力なメカニズムを提供します。開発者は、その目的と使用法を理解することで、メモリ使用率を最適化し、シングルトン パターンを適用し、重要なデータへのグローバル アクセスを容易にすることができます。

以上が静的変数はどのように機能するのか、また C# のメソッド内で静的変数を宣言できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート