C#-从一个类到另一个类的静态变量

本文关键字:另一个 静态 变量 一个 C#- | 更新日期: 2023-09-27 18:21:51

首先,看看我下面的代码:

    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类发送的flag=1的吗?我指的是哪种语法?

C#-从一个类到另一个类的静态变量

这里有一些错误

  1. Flag是a上的一个方法,因此不能更改其"值"
  2. Flag是静态的,因此它没有我认为您想要的实例
  3. 我怀疑你想让Flag成为的财产

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

  5. 你有两个选择

 this.Flag = b.bFunc();
 public int bFunc()
   .... return 1;

B

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

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

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

Were这里没有静态变量,您只有一个静态函数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.

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