C#为什么不能在一个类中调用另一个类的变量,而必须是在方法里实例化后的调用

public class A
{
public int x;
}

// 在类B中使用类A中的变量
public class B
{
//为什么在类下面直接不能调用
A a = new A();
a.x = 200;
public void Method()
{
//在方法里 却可以。存取A中的实例变量x,必须先实例化A,然后才能存取
A a = new A();
a.x = 200;
}
}

你需要看一下入门的书籍,再理解一下C#语法规范。
c#是一种面向对象的语言,也就是说,你的class A\B 都是对象。
而你声明的变量 x 是在A中的,
也就是说,当代码没有运行到class A的时候, 你是不可能知道A中有一个x 的。
所以,你在classA中,去操作类内部的变量,肯定是可以的,因为代码一定会运行,
而你在classB中,你是在运行B的代码,如果你要调用x,你就要先把classA给实例化,让编译器知道你在用A了,才可以调用A中的x。

如果你想不用new 就访问一个变量,可以使用static修饰符

public static class A
{
public static int x;
}
这样只要程序启动,A和x都一直在内存中,你随时可以直接调用,但是由于是静态的,他们是不会被dispose的,也就是一直在占内存。
而之前的做法,当A不被调用的时候,垃圾回收器会自动回收A,释放内存。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-29
你自己把自己都说进去了,你都说在classB中,是在运行B的代码,如果要调用x,就要先把classA给实例化,让编译器知道你在用A了,才可以调用A中的x;你这不是承认可以这样调用吗?这个楼主反应的问题不是矛盾吗?

其实是实例化A后没有办法调用A的成员,因为类的成员只有方法,字段,属性,索引等,这样的调用根本无法被调用这个类的类所引用.
第2个回答  2019-11-23
在类B中使用类A中的变量,不写在方法里没有任何意义

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网