我有一个问题。
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
}
答案 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
是在函数内声明的局部变量。它在其他任何地方都看不到。