0

まず、以下のコードを見てください。

    class A
    {

        public static int Flag()
        {
                    return 0;// set initial value=0 
        }

        B b= new B();
        public void afunc()
        {
           b.bfunc();
        }
    }

クラス B は静的変数を送受信します。

       class B
       {
            A a= new A();
            int flag= a.Flag();
            public void bfunc()
            {
                if(flag==0) 
                 { 
                    flag=1;//???? is this wrong???
                    //do some thing
                 }
             }

        }

クラス A は、初期値 = 0 の静的変数を B に送信します。次に、クラス A がクラス B から bfunc を呼び出します。bfunc() で flag=1 を設定します。私はC#が初めてです。クラス A がクラス B から送信された flag=1 を受信する方法を教えてください。つまり、どの構文ですか?

4

3 に答える 3

2

ここでいくつかのことが間違っています

  1. Flagは A のメソッドであるため、その「値」を変更することはできません
  2. Flag静的なので、あなたが望むと思うインスタンスがありません
  3. Flag を A のプロパティにしたいのではないかと思います

    public int Flag{get;set;}
    
  4. Aとの新しいインスタンスを作成してBいます。これは正しいかもしれませんが、これは既存のインスタンスを参照していないことを意味します。

  5. 2 つのオプションがあります

 this.Flag = b.bFunc();

 public int bFunc()
   .... return 1;

B

 public void bFunc()
 ... a.Flag = 1;

本当に静的変数が必要な場合は、

public static int Flag = 0;
A.Flag = x
于 2013-07-10T09:06:45.270 に答える
0

あなたのコードには多くの問題があるため、あなたを正しく理解できたかどうかわかりません。Flag値を保存できるように、メソッドではなくプロパティにする必要があります。あなたがそれを使用した方法は、ゼロを投げただけでした。

まず、あなたの 2 つのクラス。通常、プロパティはプライベート フィールドへのアクセサーとして使用する必要があることに注意してください。ただし、最も簡単な方法で行いましょう。

class A
{
    public static int Flag = 0;
}

class B
{
    public void bfunc()
    {
        if (A.Flag == 0)
        {
            A.Flag = 1;
        }
    }
}

次に、次のように使用してFlagの値を変更します。

B bObject = new B();
bObject.bfunc();
// A.Flag is now 1.

以前は 0 だった場合にのみ、 の値が 1bfunc()に変更されることに注意してください。Flag

于 2013-07-10T09:16:06.003 に答える