我在C#中有一个类Foo,它有一个字符串名称,我希望每个都有一个唯一的名称。我想要做的是从创建静态int变量获取名称,然后将其分配给我添加到字符串末尾的本地实例int变量。这不起作用,我怎么能得到我想要的结果。
class Foo
{
static int count = 0;
int fooNum;
string name;
public Foo
{
++count;
fooNum = count;
name = "Foo" + fooNum;
Console.WriteLine(name);
}
}
int main()
{
for(int i = 0; i < 5; i++)
{
Foo test = new Foo();
}
}
实际输出: Foo5 Foo5 Foo5 Foo5 Foo5
期望的输出: Foo0 Foo1 foo2的 Foo3 Foo4
非常感谢任何帮助
由于
答案 0 :(得分:2)
您的代码无法编译。将其更正为:
class Foo
{
static int count = 0;
int fooNum;
string name;
public Foo()
{
++count;
fooNum = count;
name = "Foo" + fooNum;
Console.WriteLine(name);
}
}
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
Foo test = new Foo();
}
}
使其编译和工作就像一个魅力。它打印
Foo1
Foo2
Foo3
Foo4
Foo5
答案 1 :(得分:1)
Mitch和Tudor有正确的例子,但我仍然会指出为什么你的代码不起作用:
您的代码不起作用,因为您的Foo
构造函数上缺少括号,导致代码无法编译。如果忽略此编译器错误,则可能正在运行先前的构建,该构建会生成您正在看到的输出。修复构造函数,您将看到您的代码将按预期工作。
答案 2 :(得分:0)
此代码按预期工作:
namespace ConsoleApplication68
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
Foo test = new Foo();
Console.WriteLine(test.name);
}
}
}
class Foo
{
private static int count = 0;
public string name;
public Foo()
{
int fooNum = ++count;
name = "Foo" + fooNum;
}
}
}
请注意,我已将Console.WriteLine()
移到您代码中更正确的位置。
答案 3 :(得分:0)
尝试将您的食物收集到通用收藏中,例如:
List<Foo> myFooList;
然后,当您将更多食物添加到列表中时,您可以使用索引号来识别它。