1

C#でグローバル構造を定義し、それを3つの別々のサブルーチンで使用したいと思います。構造体はすでに作成していますが、コードの複数のセクションで使用できるように、構造体をグローバル変数にする方法がわかりません。どんな助けでも大歓迎です。

    public struct Simple
    {
        public int Position;
        public bool Exists;
        public double LastValue;
    };


    static void Main(string[] args)
    {
        Simple s;
        s.Position = 1;
        s.Exists = false;
        s.LastValue = 5.5;
    }

したがって、コード内の他の2つのルーチンで単純構造を使用し、それを別の形式に渡すことができます(1つの変数を複数回使用する)。

4

2 に答える 2

2

C#で「グローバル」に最も近いのは「静的」です。クラスとすべてのメンバーを静的として定義するだけで、含まれている名前空間が参照されている場所からアクセスできます。Servyが正しく指摘しているように、編集します。クラス自体は静的である必要はありません。ただし、そうすると、コンパイル時にすべてのメンバーが静的になります。また、静的メンバーは任意の可視性を持つことができるため、パブリック静的プロパティまたはメソッドによって使用されるプライベート静的フィールドを持つことができ、ホームアセンブリの外部には表示されない内部静的クラスを持つことができます。静的であるだけでは、自動的に広く開かれるわけではありません。

ただし、より良いパターンはシングルトンかもしれません。それ自体の静的インスタンスを1つ持つクラスを定義し、それを渡すことができます。利点は、必要に応じてオブジェクトをインスタンスクラスとして処理できることですが、静的ゲッターを使用すると、どこでも同じインスタンスを使用できます。ここにいくつかの読み物があります:http://csharpindepth.com/Articles/General/Singleton.aspx

于 2012-08-10T15:27:29.560 に答える
1

あなたの場合、別のメソッドで使用する必要があるメイン メソッドのローカル変数としてオブジェクトがあるようです。このコンテキストでの適切な解決策は、他のメソッドにパラメーターを追加することです。次の例を見てください。

public class MyObject
{
    public int Value;
}

public static void Main(string[] args)
{
    MyObject obj = new MyObject();

    obj.Value = 42;

    PrintObject(obj);

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey(true);
}

public static void PrintObject(MyObject obj)
{
    Console.WriteLine(obj.Value);
}
于 2012-08-10T15:58:05.200 に答える