C# 从其他类获取公共int的值
在ClassTest中有一个按钮单击事件,我想将d_testNumber的值设置为3。然后在类2test中,我希望能够进行if测试,并且if d_testNumber显示一个消息框。我的问题是,在类2test中,d_testNumber始终为0。有人能告诉我如何从class 1test d_testNumber到class 2test得到值吗 这是在课堂上进行的C# 从其他类获取公共int的值,c#,winforms,C#,Winforms,在ClassTest中有一个按钮单击事件,我想将d_testNumber的值设置为3。然后在类2test中,我希望能够进行if测试,并且if d_testNumber显示一个消息框。我的问题是,在类2test中,d_testNumber始终为0。有人能告诉我如何从class 1test d_testNumber到class 2test得到值吗 这是在课堂上进行的1测试: public int d_testNumber = 0; 类1测试中的方法: void miEditCopay_Click(
1测试
:
public int d_testNumber = 0;
类1测试中的方法:
void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
d_testNumber = 3;
}
这是2级测试:
public int d_testNumber;
public void HelloMessage();
if (d_testNumber == 3)
{
messagebox.show('test worked');
}
类2test中的方法:
public int d_testNumber;
public void HelloMessage();
if (d_testNumber == 3)
{
messagebox.show('test worked');
}
也许您希望d_testNumber是静态的,这样两个类都可以轻松访问它 在1测试中:
public static int d_testNumber;
//rest of code the same
在2test中:
if (1test.d_testNumber == 3)
{
//code
}
(假设两个类都在同一个项目/命名空间中,如果不是,则可能需要顶部的引用/使用语句)如果要使用类1中定义的相同值,则有3个选项
public static int d_testNumber = 0;
if (Class1test.d_testNumber == 3)
{
//your code
}
在声明中使用
static
public static int d_testNumber = 0;
如果它是类上的公共实例属性,如下所示:
public Class Alpha
{
public int DTestNumber ;
}
public Class Alpha
{
public static int DTestNumber ;
}
public class Bravo
{
public void SomeMethod()
{
if ( Alpha.DTestNumber == 3 )
{
messagebox.Show('test worked') ;
}
return ;
}
然后,另一个类需要一个对另一个类的适当实例的引用来检查它。如何获得该参考取决于您和您的程序设计。下面是一个例子:
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 int DTestNumber ;
}
public Class Alpha
{
public static int DTestNumber ;
}
public class Bravo
{
public void SomeMethod()
{
if ( Alpha.DTestNumber == 3 )
{
messagebox.Show('test worked') ;
}
return ;
}
然后在另一节课上,你可以做这样的事情:
public Class Alpha
{
public int DTestNumber ;
}
public Class Alpha
{
public static int DTestNumber ;
}
public class Bravo
{
public void SomeMethod()
{
if ( Alpha.DTestNumber == 3 )
{
messagebox.Show('test worked') ;
}
return ;
}
请注意,相对于应用程序域和类而言,静态成员是单例的(注意:静态是每个类的属性,而不是每个实例)。此外,如果您的应用程序是多线程的(几乎可以肯定是windows程序),那么对静态成员所做的任何更改都是有保证的竞争条件,除非您通过许多可用的同步原语(例如,lock
语句)尽力序列化访问
制作一些优秀的自学书籍。如果您是编程新手,请浏览并获取他们的(是的,它确实使用Python,但对于大多数语言来说,编程技能与所使用的语言无关)
如果您已经了解一些编程知识,但对C#还是新手,那么请获取一份
您必须进一步指定。两个类中都有一个d_testnumber字段,2test类将使用自己的变量 如果在某处有一个名为2testObject的2test对象,则可以执行以下操作:
void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
2testObject.d_testNumber = 3;
}
并将2testObject传递给HelloMessage()方法你应该读一本基本的c#书,在你开始编写代码之前它会对你有很大帮助。我现在正在读一本书,只是想做一个简单的应用为什么对一个新手投了反对票?他展示了他的作品是正确的?为什么不把他放在正确的方向上呢?我建议你继续阅读这本书或教程,这些材料肯定会指导你这么做。a你上面写的很多代码都不会编译…例如,MessageBox.Show的代码都是小写的,你传递给它的字符串用单引号括起来,等等。最好将来你复制你在编译器中尝试的代码。如果,有可能,这是你在编译器中写的代码,你需要检查它。我同意你的观点完整地回答,但肯定OP不会理解你的意思。他/她看起来非常初学者。我最好引导他/她继续学习教程,而不是把一些超出他/她的知识范围的东西强加给他/她。