如何在另一个类中使用非静态变量?这是我的问题:
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提出:需要一个对象引用....
我一定是非常愚蠢的,因为我在互联网上看过很多这样的例子,但是我没有把它弄好,所以如果有人帮助我,我会感激不尽。
答案 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;
}