我正在尝试使用代码在运行时创建一个类的多个实例,并且还要初始化,但是它给出了错误:
在此范围内无法声明名为'inum'的局部变量,因为 它会给'inum'赋予不同的含义,这已经被用于了 “父母或当前”范围来表示其他内容。
public class MyClass
{
static int i=0;
class A
{
public A()
{
}
}
public static void Run()
{
string inum = "i";
for (int j=1;j<=5;j++)
{
inum = inum + j.ToString();
//Initialize Instance
A inum = new A();
}
}
}
答案 0 :(得分:2)
您似乎试图“动态”使用变量名称。这在C#中不起作用,你应该改变你对变量的看法。如果要创建多个实例,请声明一个数组:
public class MyClass
{
static A[] instances;
class A
{
public A()
{
}
}
public static void Run()
{
instances = new A[5];
for (int j=0;j<5;j++)
{
instances[j] = new A();
}
}
}
答案 1 :(得分:1)
你不能在c#中拥有动态变量。您正在尝试的追加是附加值而不是变量指针。
而不是这样使用
Dictionary<int, A> inum = new Dictionary<int, A>();
for (int j=1;j<=5;j++)
{
//Initialize Instance and add to dictionary
inum.Add(j, new A());
}
您可以通过键名获取它们。还有其他几种将实例存储为集合
的方法答案 2 :(得分:1)
我不是任何想象力的C#程序员,但是通过Java规则和任何其他类似语法的语言,我知道任何事情,你正在做的是试图用新类型重新声明'inum',在它被声明为同一范围内的字符串之后。
另一点是,即使不是这种情况,你也不是创建多个实例,而是用新实例填充相同的变量5次,这只会导致一个实例(最后一个)。
从快速阅读C#教程我觉得这就像你想要的那样。我不确定你要用'inum'变量做什么,所以它已经消失,静态变量'i':
public class MyClass
{
class A
{
public A()
{
}
}
public static void Run()
{
// Declare array to hold instances
A[] instances;
// instances is now five elements long
instances = new A[5];
for (int j=0;j<5;j++)
{
//Initialize Instance
instances[j] = new A();
}
}
}
这应该导致在Run方法范围内有一个名为'instances'的5个对象的数组 - 您可能希望在类本身的范围内,可能作为静态属性。
作为旁注,对于像这样的操作(使用var'j'),最好从0开始,而不是1开始,上面的代码反映了这一点。
答案 3 :(得分:0)
你不能调用类型A“inum”的变量(已存在一个类似的那个)
你必须给它另一个名字,如:
A anyOtherName = new A();
答案 4 :(得分:0)
尝试使用不同的名称命名变量A
A objA = new A();