如何在一个类中将对象从一个方法初始化为另一个方法?

在课堂上,我有两种方法。 在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是一个很好的开始。 祝好运!

您必须将对象设置为类字段,然后您可以从类的每个方法访问它。