2

在一个类中,我有 2 种方法。在方法 1 中我创建了一个对象,但我不能在方法 2 中使用相同的对象。

为什么?请帮忙举个简单的例子。

编码太大,所以我给出了布局

public class Sub
{
}

public class DataLoader
{
    public void process1()
    {
        Sub obj = new Sub();
    }

    public void process2()
    {
        // here I can't use the object
    }
}
4

4 回答 4

7

这不起作用的原因是范围。只能从声明它的块中访问局部变量。要从多个方法访问它,请添加一个字段其作为参数传递给另一个方法。

场地:

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();
    }
}
于 2012-09-15T13:41:08.793 回答
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
    }
}

阅读不同的变量范围(特别是在这种情况下的实例变量)。您还可以将您的对象作为参数传递,例如他们的回答中提到的 codesparkle 。

于 2012-09-15T13:36:21.700 回答
1

简短的回答(没有看到你的代码)是创建的对象Method1Method2.

这里已经有一些很好的答案可以向您展示如何解决您的特定问题。但这里真正的答案是让您自己熟悉Scope的概念。它是编程的基本部分,更多地了解它会帮助你很多。

有很多关于这个主题的好文章和视频。这个视频是一个很好的开始。祝你好运!

于 2012-09-15T13:59:46.543 回答
0

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

于 2012-09-15T13:36:40.660 回答