-2

変数宣言のメモリ管理について疑問があります。

私のクラスには約 20 個のメソッドがあり、クラス全体で約 50 個の変数を使用しています。

クラスの開始時にすべての変数をグローバルに宣言しました。

それは正しい方法ですか?または、どちらが優れているか...構造または他のものを使用する???

以下に基本的な例を示します。メモリの最適化を使用する必要があります。

  class Program
    {
        static  int a, b, c, d;           //----> Here am declaring , i need any other way
        static void Main(string[] args)
        {
            a = 10;
            b = 20;
            c = 30;
            d = 40;

            int result = add(a, b, c, d);
            Console.WriteLine(result);
            Console.ReadLine();
        }
        public static int add(int w, int x, int y, int z)
        {
            return w + x + y + z;
        }
    }
4

1 に答える 1

5

クラスレベルの変数は単一のメソッド内でのみ使用されるため、そのメソッドのスコープ内でのみ宣言します。

static void Main(string[] args)
{
    var a = 10;
    var b = 20;
    var c = 30;
    var d = 40;

    int result = add(a, b, c, d);
    Console.WriteLine(result);
    Console.ReadLine();
}

経験則として、変数を可能な限り使用に近い状態に保ちます。スコープを拡大する必要があるときはいつでも、一歩下がって構造について考えてください。やみくもに変数をスコープ内で上に移動しないでください。

コードのリソース消費を最適化しようとしている理由はありますか? 特にこの単純なケースでは、コンパイラはすでにこれをうまく処理している可能性があります。実際に問題が発生していない限り、時期尚早に最適化しないでください。多くの場合、これにより管理不能なコードが生成されます。

また、これは不自然な例であることを理解しているため、これは補足です... 意味のある変数は非常に重要です。意味のある名前は、変数の目的のスコープを理解し、識別するのにも役立ちます。変数が呼び出された場合、aそれが何を意味するかについてのコンテキストは得られません。しかし、名前がその意味を示している場合は、コード内のどのコンテキストが実際にその値を担当しているかをより簡単に視覚化できるため、より適切なスコープ定義が得られます。

于 2012-04-23T17:18:30.013 に答える