-3

class1test にボタン クリック イベントがあり、d_testNumber の値を 3 に設定します。次に、クラス 2test で if テストを実行し、if d_testNumber がメッセージ ボックスを表示できるようにしたいと考えています。私の問題は、クラス 2test で d_testNumber が常に 0 であることです。クラス 1test d_testNumber からクラス 2test への値を取得する方法を教えてもらえますか?

これはクラスにあり1testます:

public int d_testNumber = 0;

クラス 1test のメソッド:

void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
    d_testNumber = 3;
}

これはクラス2testにあります:

public int d_testNumber;

クラス 2test のメソッド:

public void HelloMessage();

if (d_testNumber == 3)
{
      messagebox.show('test worked');
}
4

5 に答える 5

3

クラスのパブリックインスタンスプロパティの場合は、次のようになります。

public Class Alpha
{
  public int DTestNumber ;
}

次に、他のクラスは、それを調べるために、他のクラスの適切なインスタンスへの参照を必要とします。その参照を取得する方法は、あなたとあなたのプログラムの設計次第です。次に例を示します。

public class Bravo
{
  public void SomeMethod()
  {
    Alpha instance = GetAnInstanceOfAlpha() ; // might be passed as a parameter
    if ( instance.DTestNumber == 3 )
    {
      messagebox.Show('test worked') ;
    }
    return ;
  }

クラスの public staticプロパティの場合は、次のようになります。

public Class Alpha
{
  public static int DTestNumber ;
}

次に、他のクラスで次のようなことができます。

public class Bravo
{
  public void SomeMethod()
  {
    if ( Alpha.DTestNumber == 3 )
    {
      messagebox.Show('test worked') ;
    }
    return ;
  }

静的メンバーは、アプリケーション ドメインとクラスに関してシングルトンであることに注意してください (注: statics はクラスごとのプロパティであり、インスタンスごとではありません)。さらに、アプリケーションがマルチスレッド化されている場合 (Windows プログラムがほぼ確実にそうであるように)、利用可能な多くの同期プリミティブ (たとえば、lockステートメント)。

Head First Labsは、自己学習用の優れた本をいくつか作成しています。プログラミングに慣れていない場合は、Head First Labsにアクセスして、Head First Programming を入手してください。Python 言語を使用したプログラミングの学習者向けガイド(もちろん、Python を使用しますが、ほとんどの言語ではプログラミングのスキルは必要ありません)使用する言語に関連しています。

プログラミングについてはある程度知っているが、C# は初めてという場合は、 Head First C#: A Learner's Guide to Real-World Programming with C#, XAML, and .NETのコピーを入手してください。強くお勧めします。

ヘッドファーストプログラミング

ヘッドファーストC#

于 2013-08-16T17:33:29.170 に答える
1

static宣言で使用します。

    public static int d_testNumber = 0;
于 2013-08-16T17:33:00.730 に答える
1

クラス 1 で定義されているものと同じ値を使用する場合は、3 つのオプションがあります。

  1. 最初に変数を静的にする
  2. 静的にしたくない場合は、値を他のクラスに渡す必要があります

1の例:

public static int d_testNumber = 0;
if (Class1test.d_testNumber == 3)
{
      //your code
}
于 2013-08-16T17:31:01.797 に答える
0

両方のクラスが簡単にアクセスできるように、d_testNumber を静的にしたい場合がありますか?

1回のテストで:

public static int d_testNumber;
//rest of code the same

2テストで:

if (1test.d_testNumber == 3)
{
    //code
}

(両方のクラスが同じプロジェクト/名前空間にあると仮定します。そうでない場合は、上部に参照/ using ステートメントが必要になる場合があります)

于 2013-08-16T17:30:48.280 に答える