【问题标题】:How to initialize an object from one method to another method within a class?如何将对象从一个方法初始化为类中的另一个方法?
【发布时间】:2026-02-22 23:00:02
【问题描述】:

在一个类中,我有 2 种方法。在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
    }
}

【问题讨论】:

  • Therin 我已经发布了代码布局。
  • 已回答。所以接受任何对你有用的:)

标签: c# class methods


【解决方案1】:

这不起作用的原因是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();
    }
}

【讨论】:

  • 在您的代码中,使用object 是有意义的。但我认为应该强调的是,大多数时候使用object 类型的字段或参数并不是正确的解决方案。
  • 绝对。除非您需要同步锁;)
【解决方案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。

【讨论】:

  • 我听不懂李尔。你能解释一下吗?
  • @user1671639 我更新了我的代码以使用您的示例。这有帮助吗?如果没有,您在哪个部分遇到了问题?
【解决方案3】:

简短的回答(没有看到您的代码)是Method1 中创建的对象在Method2 中没有任何可见性或范围。

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      最近更新 更多