首先,看看下面的代码:
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类向B发送初始值= 0的静态变量;然后A类从B类调用bfunc。在bfunc()中我设置flag = 1。我是C#的新手。你能和我分享一下A级如何收到由B级发出的标志= 1。我的意思是哪种语法?
答案 0 :(得分:2)
这里有一些问题
Flag
是A上的一种方法,因此您无法更改其“值”Flag
是静态的,因此它没有我认为你想要的实例我怀疑你想让Flag成为A的属性
public int Flag{get;set;}
您正在制作A
和B
的新实例,这对您来说可能是正确的,但是厌倦了这意味着您没有引用现有实例
A
this.Flag = b.bFunc();
public int bFunc()
.... return 1;
乙
public void bFunc()
... a.Flag = 1;
如果你真的想要静态变量那么
public static int Flag = 0;
A.Flag = x
答案 1 :(得分:0)
这里没有静态变量,只有静态函数int Flag()
。要获得A类中flag
的值,您必须从函数bfunc()
返回此值,如下所示:
public int bfunc()
{
if(flag==0)
{
flag=1;
return flag;
}
}
答案 2 :(得分:0)
我不知道我是否理解你,因为你的代码有很多问题。 Flag
应该是属性而不是方法,因此您可以存储您的值。你使用它的方式只是抛出一个零。
首先,你的两个班级。请记住,通常属性应该用作私有字段的访问者,但让我们以最简单的方式进行。
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.
请注意,只有bfunc()
之前的值为Flag
,才会将{{1}}的值更改为1。