在课堂上,我有两种方法。在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
}
}
答案 0 :(得分:6)
这不起作用的原因是scope。 局部变量只能从声明的块中访问。要从多个方法访问它,请添加字段或将其作为参数
字段:强>
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();
}
}
答案 1 :(得分:2)
您应该在班级中使用成员变量。
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
}
}
阅读不同的变量范围(特别是本例中的实例变量)。您还可以将对象作为参数传递,例如their answer中提到的codesparkle。
答案 2 :(得分:1)
简短回答(没有看到您的代码)是Method1
中创建的对象在Method2
中没有任何可见性或范围。
这里已经有一些很好的答案可以告诉你如何解决你的具体问题。但这里真正的答案是通常熟悉 Scope 的概念。这是编程的基本部分,学习更多有关它的知识将会帮助你。
有很多关于这个主题的好文章和视频。这个video是一个很好的开始。祝你好运!
答案 3 :(得分:0)
您必须将对象设置为类字段,然后您可以从类的每个方法访问它。