一些逻辑OOP概念

时间:2010-11-03 11:18:53

标签: c#-2.0

我有一个问题。

class A
{
    static void m1()
    {
       int x=10;
    }
}

class B
{
    // if i want to access the variable x in b class how can i access it 

    A a = new A();
    // a. what should i write here to access x variable
}

4 个答案:

答案 0 :(得分:2)

要访问x,您必须将其设为A上的字段:

class A
{
    public int X;
}
class B
{
    static void Main()
    {
        A a = new A();
        a.X = 17;
    }
}

然而,从类中公开公共字段通常是不好的做法 - 最好将字段包装在属性中以封装它:

class A
{
    int _x;
    public int X
    {
        get { return _x; }
        set { _x = value; }
    }
}

如果这种语法看起来很麻烦,你可以稍微简化一下。 C#有一个名为自动实现的属性的功能,如果你这样做,编译器将为你生成上面的代码:

class A
{
    public int X { get; set; }
}

答案 1 :(得分:1)

它应该是属性或公共变量。

答案 2 :(得分:1)

    class Class1
    {
        public int x;

        public void M1()
        {
            x = 10;
        }

    }

class ClassB
{

void Method()
{
    Class1 a = new Class1();
    a.M1();
    a.x = 5;
    //at this point the x will contain 5
}
}

exmaple使用实例变量,而不是静态。

要访问静态变量,你必须有一个静态方法M1,然后在ClassB中访问x变量,使用类名而不是对象名,如下所示:

Class1.x = 5;

变量x1也必须声明为静态,如:public static x = 10;

答案 3 :(得分:1)

首先,在提问时,请花30秒时间尝试正确。你的代码是无稽之谈。

call不是C#中的有效关键字。你是说class吗?或者是其他东西?第二,要求你通过拼写检查程序运行文本是不合理的吗?我们没有人得到报酬来回答你的问题,我们是在自己的空闲时间免费做的。因此,如果您想要答案,请让 easy 让我们理解并回答您的问题。不要以我们的代价为懒,因为那时我们也会懒惰,而忽视你的问题。

现在,正如我理解你的问题,你不能。 x是在函数内声明的局部变量。它在其他任何地方都看不到。