繁体   English   中英

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

[英]C#- static variables from class to class

首先,看看下面的代码:

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

这里有一些问题

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

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

  5. 你有两个选择

一种

 this.Flag = b.bFunc();

 public int bFunc()
   .... return 1;

 public void bFunc()
 ... a.Flag = 1;

如果你真的想要静态变量那么

public static int Flag = 0;
A.Flag = x

这里没有静态变量,你只有一个静态函数int Flag() 要获取类A中的flag值,必须从函数bfunc()返回此值,如下所示:

public int bfunc()
        {
            if(flag==0) 
             { 
                flag=1;
                return flag;
             }
         }

我不知道我是否理解你,因为你的代码有很多问题。 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.

请注意,只有在之前为0时, bfunc()才会将Flag的值更改为1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM