从另一个方法调用在一个方法中实例化的对象的方法

时间:2014-12-10 00:28:25

标签: c# .net oop methods instantiation

我尝试从另一个方法(ObjectInstantiation())调用在一个方法(Main())中实例化的对象的方法。我归结为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public static void ObjectInstantiation()
        {
            TestClass testClass1 = new TestClass(6);
            TestClass testClass2 = new TestClass(7);
        }

        static void Main()
        {
            ObjectInstantiation();
            testClass1.PrintNumber();
            Console.ReadLine();
        }
    }

    class TestClass
    {
        int number;

        public TestClass(int i)
        {
            number = i;
        }

        public void PrintNumber()
        {
            Console.WriteLine(number);
        }
    }
}

这会引发错误"名称' testClass1'在当前背景下不存在" 我理解我可以在Main()内实例化它们,但我还需要从第三种方法中访问对象的方法,与ObjectInstantiation()Main()分开,所以我再次遇到同样的问题。

我应该补充说,有多个类的实例非常重要,因为每个实例都会存储不同的值。

2 个答案:

答案 0 :(得分:2)

为了以任何方式引用对象,对该对象的引用必须在范围内。在这种情况下,testClass1是一个局部变量,它只在ObjectInstantiation方法的范围内。

如果要在Main方法中引用它,则需要使其成为该类的静态成员:

private static TestClass testClass1;
private static TestClass testClass2;


public static void ObjectInstantiation()
{
    testClass1 = new TestClass(6);
    testClass2 = new TestClass(7);
}

答案 1 :(得分:1)

public static void ObjectInstantiation()
{
    TestClass testClass1 = new TestClass(6);
    TestClass testClass2 = new TestClass(7);
}

这意味着testClass1testClass2是局部变量,其范围在ObjectInstantiation内。你无法访问其范围之外的变量。

您可以在您想要的其他方法可以访问的范围内声明您的变量。

static TestClass testClass1;
static TestClass testClass1;

public static void ObjectInstantiation()
{
    testClass1 = new TestClass(6);
    testClass2 = new TestClass(7);
}

然后在Main

中使用它们