C# - 从类到类的静态变量

时间:2013-07-10 08:55:08

标签: c#

首先,看看下面的代码:

    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。我的意思是哪种语法?

3 个答案:

答案 0 :(得分:2)

这里有一些问题

  1. Flag是A上的一种方法,因此您无法更改其“值”
  2. Flag是静态的,因此它没有我认为你想要的实例
  3. 我怀疑你想让Flag成为A的属性

    public int Flag{get;set;}
    
  4. 您正在制作AB的新实例,这对您来说可能是正确的,但是厌倦了这意味着您没有引用现有实例

  5. 您有两个选择
  6. 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。