另一个类中的非静态变量

时间:2013-12-25 23:27:52

标签: c# int non-static

如何在另一个类中使用非静态变量?这是我的问题:

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()//method gets called...
    {
        a++;
    }

    public class class2
    {
       // Here initializing class2 variable as class1 property value.
        int b=alpha;
    }
}

然后Visual Studio提出:需要一个对象引用....

我一定是非常愚蠢的,因为我在互联网上看过很多这样的例子,但是我没有把它弄好,所以如果有人帮助我,我会感激不尽。

4 个答案:

答案 0 :(得分:1)

您需要访问该其他类的对象 - 换句话说'引用'(在您的示例中为class1)

var c1 = new class1();

然后你可以访问它的成员

var alpha = c1.alpha;

根据您的项目,您可以在class2中实例化它或将其作为参数传递给class2构造函数。

你在这里所做的可能适用于JAVA。

答案 1 :(得分:1)

为了使用非静态字段(事实上,要使用非静态的任何东西),您需要拥有一个要从中访问非静态成员的对象实例。

在这种情况下,嵌套类class2需要引用其外部类。这可以在构造函数中传递,也可以在方法调用中传递。

例如,以下是一种使其有效的方法:

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()
    {
        a++;
        class2 c2 = new class2(this);
        Console.WriteLine("{0}", c2.b);
    }
    public class class2
    {
        public int b;
        public class2(class1 outer) {
            b = outer.alpha;
        }
    }
}

答案 2 :(得分:0)

在您的示例中,您需要实例化class1的实例以访问class2中的变量。

答案 3 :(得分:0)

应该是这样的

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()//method gets called...
    {
        a++;
    }     
}

public class class2
{
   // Here initializing class2 variable as class1 property value.
    class1 obj = new class1();
    int b= obj.alpha;
}