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

时间:2012-09-15 13:33:12

标签: c# class methods

在课堂上,我有两种方法。在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
    }
}

4 个答案:

答案 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)

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