C# 对象列表

本文关键字:列表 对象 | 更新日期: 2023-09-27 18:31:48

我不确定如何创建对象列表。我得到"非可调用成员ListObjects.TestObject.UniqueID"不能像方法一样使用。

任何见解都会有所帮助。

我正在尝试创建以下列表的对象的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListObjects
{
    class TestObject
    {
        public int UniqueID { get; set; }

    }
}

主代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListObjects
{
    class Program
    {
        static void Main(string[] args)
        {
            TestObject TestObject = new TestObject();
            List<TestObject> ObjectList = new List<TestObject>();
            ObjectList.Add(new TestObject().UniqueID(1));
            ObjectList.Add(new TestObject().UniqueID(10));
            ObjectList.Add(new TestObject().UniqueID(39));
        }
    }
}

C# 对象列表

public int UniqueID { get; set; } 不是一个方法,它是一个二传手,你可以像使用方法一样使用它

这样做

ObjectList.Add(new TestObject()
{
    UniqueID = 1
});

我无法回忆语法,但它来自内存:

改写这行:

ObjectList.Add(new TestObject().UniqueID(1));

用这一行:

ObjectList.Add(new TestObject(){UniqueID = 1});

并为所有人做同样的事情.添加您拥有的行。

你像使用方法一样使用 UniqueId。它是一个属性,必须分配。如果您知道在创建 TestObject 时将分配一个 ID,则应使构造函数支持该 ID,并相应地使用它。如果没有,请使用 ObjectList.Add(new TestObject { UniqueID = 1 }); 分配不带构造函数的值。

这就是我处理这种情况的方式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListObjects
{
    class TestObject
    {
        public int UniqueID { get; set; }
        public TestObject(int uniqueId)
        {
            UniqueID = uniqueId;    
        }
    }
}

主代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListObjects
{
    class Program
    {
        static void Main(string[] args)
        {
            List<TestObject> ObjectList = new List<TestObject>();
            ObjectList.Add(new TestObject(1));
            ObjectList.Add(new TestObject(10));
            ObjectList.Add(new TestObject(39));
        }
    }
}

这里有几件事。 您不需要对象的实例来声明列表,只需要类型即可。

此外,UniqueID是一个属性,而不是一个方法。 您为它们赋值(或从中读取值),不会像方法的参数那样传入值。

您还可以在一次调用中初始化列表,如下所示:

List<TestObject> ObjectList = new List<TestObject>() 
                 { new TestObject() { UniqueID = 1}, 
                   new TestObject() { UniqueID = 10 },
                   new TestObject() { UniqueID = 39 } };

这将导致一个新的List<T>,其中T的类型是TestObject,并且列表被初始化为TestObject的3个实例,每个实例都用UniqueID的值初始化。

 TestObject TestObject = new TestObject();

删除此行。

并将以下行编辑为此语法

new TestObject { UniqueID = 39 }