我在class1test中有一个按钮单击事件,我想将d_testNumber的值设置为3.然后在类2test中,我希望能够进行if测试,如果d_testNumber显示一个消息框。我的问题是d_testNumber在类2test中始终为0。有人能告诉我如何从class 1test d_testNumber获取值到class 2test吗?
这是在课程1test
中:
public int d_testNumber = 0;
1级测试中的方法:
void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
d_testNumber = 3;
}
这是在2级测试中:
public int d_testNumber;
第2类中的方法:
public void HelloMessage();
if (d_testNumber == 3)
{
messagebox.show('test worked');
}
答案 0 :(得分: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 ;
}
如果它是类上的公共 static 属性,请执行以下操作:
public Class Alpha
{
public static int DTestNumber ;
}
然后在另一堂课中你可以这样做:
public class Bravo
{
public void SomeMethod()
{
if ( Alpha.DTestNumber == 3 )
{
messagebox.Show('test worked') ;
}
return ;
}
请注意,静态成员是关于应用程序域和类的单例(注意:静态是每类属性,而不是 per-intance )。此外,如果您的应用程序是多线程的(几乎可以肯定是一个Windows程序),对静态成员所做的任何更改都是有保证的竞争条件,除非您通过许多可用的同步原语(例如,{ {1}}声明)。
Head First Labs制作了一些优秀的自学书籍。如果您不熟悉编程,请转到Head First Labs并获取 Head First Programming: A learner's guide to programming using the Python language (是的,它确实使用Python,但对于大多数语言,编程技巧是与使用的语言无关。
如果您已经对编程有所了解,但对C#不熟悉,那么请获取 Head First C#: A Learner's Guide to Real-World Programming with C#, XAML, and .NET 的副本。强烈推荐。
答案 1 :(得分:1)
如果你想使用类1中定义的相同值,那么你有3个选项
1的例子:
public static int d_testNumber = 0;
if (Class1test.d_testNumber == 3)
{
//your code
}
答案 2 :(得分:1)
在声明中使用static
。
public static int d_testNumber = 0;
答案 3 :(得分:1)
您必须进一步指定。两个类中都有一个d_testnumber字段,而2test类将使用它自己的变量。
如果你有一个名为2testObject的2test对象,你可以这样做:
void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
2testObject.d_testNumber = 3;
}
将2testObject传递给HelloMessage()方法
答案 4 :(得分:0)
也许您希望d_testNumber是静态的,因此两个类都可以轻松访问它?
in 1test:
public static int d_testNumber;
//rest of code the same
in 2test:
if (1test.d_testNumber == 3)
{
//code
}
(假设两个类都在同一个项目/命名空间中,如果没有,你可能需要在顶部使用reference / using语句)