非静态字段需要对象引用。列表与LT;>

时间:2016-08-22 15:07:15

标签: c#

我对这个相当典型的错误感到有些困惑。我的代码如下。我正在尝试将项目添加到列表中。

编译器说我需要一个非静态字段的对象引用,但我不能使该类静态,因为我没有返回值...?

 public class ApplicantData
        {
            public string Salutation { set; get; }
            public string FirstName { set; get; }
            public string LastName { set; get; }
        }

        public class ApplicantList : List<ApplicantData>
        {
            public void Add(string salutation, string firstName, string lastName)
            {
                var data = new ApplicantData
                {
                    Salutation = salutation,
                    FirstName = firstName,
                    LastName = lastName

                };
                this.Add(data);
            }
        }

通过以下方式调用上述内容:

List ApplicantsDetailsData = ApplicantList.Add(salutation, firstname, lastname);

我确定答案必须明显......(!)

4 个答案:

答案 0 :(得分:2)

您需要列表的实例才能向其添加内容。现在你只有一个列表的概念。你有零列表。例如:

var list = new ApplicantList();
list.Add("foo", "bar", "blap");

但是,IMO的子类List<T>通常是一个糟糕/混乱的举动。

答案 1 :(得分:1)

您正试图像静态方法一样使用ApplicantList.Add

首先需要创建ApplicantList类型的对象,并在该对象上调用Add。你不能直接在课堂上调用它,因为它不是静态的。

答案 2 :(得分:0)

您需要创建ApplicationList

实例
ApplicantList applicantsDetailsData = new ApplicantList();
applicantsDetailsData.Add(salutation, firstname, lastname);

答案 3 :(得分:0)

ApplicationList是类型(继承自List),而不是该类型的实例。您只能在类的实例上调用实例成员(没有static关键字的函数)。

ApplicationList ApplicantsDetailsData = new ApplicationList();
applicationList.Add(salutation, firstname, lastname);