如何在一个类中将对象从一个方法初始化为另一个方法?
在课堂上,我有两种方法。 在method1中我创建了一个对象,但我不能在method2中使用相同的对象。
为什么? 请帮助一个简单的例子。
编码太大了,所以我给出了布局
public class Sub { } public class DataLoader { public void process1() { Sub obj = new Sub(); } public void process2() { // here I can't use the object } }
这不起作用的原因是范围 。 只能从声明的块中访问局部变量 。要从多个方法访问它,请添加一个字段或将其作为参数传递给另一个方法。
领域:
class YourClass { object yourObject; void Method1() { yourObject = new object(); } void Method2() { int x = yourObject.GetHashCode(); } }
参数:
class YourClass { void Method1() { Method2(new object()); } void Method2(object theObject) { int x = theObject.GetHashCode(); } }
您应该在类中使用成员变量。
public class DataLoader { private Sub mySub; public void Process1() { mySub = new Sub(); } public void Process2() { if(mySub == null) throw new InvalidOperationException("Called Process2 before Process1!"); // use mySub here } }
阅读不同的变量范围(特别是本例中的实例变量)。 您还可以将对象作为参数传递,例如答案中提到的codesparkle。
简短的回答(没有看到您的代码)是Method1
中创建的对象在Method1
中没有任何可见性或范围。
这里已经有一些很好的答案,告诉你如何解决你的具体问题。 但这里真正的答案是通常熟悉Scope的概念。 这是编程的基本部分,学习更多有关它的知识将对你有所帮助。
有很多关于这个主题的好文章和video。 这段video是一个很好的开始。 祝好运!
您必须将对象设置为类字段,然后您可以从类的每个方法访问它。