C#类实例列表

Bar*_*ant 0 c#

我不是编程新手,但我对C#很新.我试图用类的实例填充列表.

我希望下面的代码在控制台中显示数字0到9,但它重复9次十次.显然我做错了什么.

我怀疑在列表中添加"a"只是添加了对"a"的引用,而不是class1的新实例.我不知道我应该添加什么.将新的class1实例添加到列表中的正确语法是什么?

提前感谢您的回答!

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<class1> iList = new List<class1>();
            class1 a = new class1();

            for (int i = 0; i < 10; i++)
            {

                iList.Add(a);
                iList[i].var1 = i;
            }
            for (int i = 0; i < iList.Count; i++)
            {
                System.Console.Write("var1 of " + i + ": " + iList[i].var1 + "\r\n");
            }
            Console.ReadLine();
        }
    }

    class class1
    {
        public int var1;
    }
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*uez 9

您正在反复添加相同的对象,这就是导致所有十个项目都指向同一个对象.

将对象添加到列表时,不会创建新对象.您正在添加对要添加的对象的引用.在此示例中,您将添加相同的引用10次.因此,每次访问该var1属性时,您都在重写相同的值.

然后,当您循环遍历列表(将包含10个引用)时,所有这些引用都指向同一个对象.

class1的实例应该在循环中:

for (int i = 0; i < 10; i++)
{
    class1 a = new class1();
    iList.Add(a);
    iList[i].var1 = i;
}
Run Code Online (Sandbox Code Playgroud)