C#为什么不能在一个类中调用另一个类的变量,而必须是在方法里实例化后的调用
publicclassA{publicintx;}//在类B中使用类A中的变量publicclassB{//为什么在类下面直接不能调用Aa=newA();a.x=200;...
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;
}
} 展开
{
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;
}
} 展开
3个回答
展开全部
你需要看一下入门的书籍,再理解一下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,释放内存。
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,释放内存。
引用376710727的回答:
你需要看一下入门的书籍,再理解一下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,释放内存。
你需要看一下入门的书籍,再理解一下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,释放内存。
展开全部
你自己把自己都说进去了,你都说在classB中,是在运行B的代码,如果要调用x,就要先把classA给实例化,让编译器知道你在用A了,才可以调用A中的x;你这不是承认可以这样调用吗?这个楼主反应的问题不是矛盾吗?
其实是实例化A后没有办法调用A的成员,因为类的成员只有方法,字段,属性,索引等,这样的调用根本无法被调用这个类的类所引用.
其实是实例化A后没有办法调用A的成员,因为类的成员只有方法,字段,属性,索引等,这样的调用根本无法被调用这个类的类所引用.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在类B中使用类A中的变量,不写在方法里没有任何意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询