我尝试从另一个方法(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()
分开,所以我再次遇到同样的问题。
我应该补充说,有多个类的实例非常重要,因为每个实例都会存储不同的值。
答案 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);
}
这意味着testClass1
和testClass2
是局部变量,其范围在ObjectInstantiation
内。你无法访问其范围之外的变量。
您可以在您想要的其他方法可以访问的范围内声明您的变量。
static TestClass testClass1;
static TestClass testClass1;
public static void ObjectInstantiation()
{
testClass1 = new TestClass(6);
testClass2 = new TestClass(7);
}
然后在Main