-3

I have a button click event in class1test where I want to set the value of d_testNumber to 3. Then in class 2test I want to be able to do an if test and if d_testNumber show a message box. My problem is that d_testNumber is always 0 in class 2test. Can someone tell me how to get the value from class 1test d_testNumber to class 2test?

This is in class 1test:

public int d_testNumber = 0;

Method in class 1test :

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

This is in class 2test:

public int d_testNumber;

Method in class 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 Class Alpha
{
  public static int DTestNumber ;
}

然后在另一个类中,您可以执行以下操作:

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

请注意,静态成员是相对于应用程序域和类的单例(注意:静态是每个类的属性,而不是每个实例)。此外,如果您的应用程序是多线程的(几乎可以肯定是 windows 程序),对静态成员所做的任何更改都是有保证的竞争条件,除非您通过许多可用的同步原语(例如,lock语句)。

Head First Labs制作了一些优秀的自学书籍。如果您是编程新手,请前往Head First Labs并获取他们的Head First Programming:使用 Python 语言编程的学习者指南(是的,它确实使用 Python,但对于大多数语言,编程技能不是与使用的语言有关。

如果您已经对编程有所了解,但对 C# 不熟悉,那么请获取一份Head First C#:使用 C#、XAML 和 .NET 进行实际编程的学习者指南。强烈推荐。

头部优先编程

头先 C#

于 2013-08-16T17:33:29.170 回答
1

您必须进一步指定。您在两个类中都有一个 d_testnumber 字段,并且 2test 类将使用它自己的变量。

如果你在某处有一个名为 2testObject 的 2test 对象,你可以这样做:

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

并将 2testObject 传递给 HelloMessage() 方法

于 2013-08-16T17:36:02.773 回答
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 回答
1

static在声明中使用。

    public static int d_testNumber = 0;
于 2013-08-16T17:33:00.730 回答
0

也许您希望 d_testNumber 是静态的,以便两个类都可以轻松访问它?

在 1 测试中:

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

在2测试中:

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

(假设两个类都在同一个项目/命名空间中,如果不是,您可能需要顶部的引用/使用语句)

于 2013-08-16T17:30:48.280 回答