我正在查看一个继承了 List<T>
的代码.为继承 List<T>
的子类创建对象时, 传递了两个 T 类型的值。
那两个对象是如何到达父类的List<T>
?据我所知,您需要一个构造函数,该构造函数使用 :base()
将参数传递给父级的构造函数。 ,但就我而言,没有任何 base
在任何地方指定。
这是我的类(class)
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
public class PeopleCollection : List<Person>
{
}
现在假设我有两个 Person
类型的对象命名为 p1, p2
我关心的是下面这行..
PeopleCollection people = new PeopleCollection { p1, p2 };
PeopleCollection
中没有构造函数它需要一个 Type Person 的集合。然而传递了两个对象。
我想知道的是,在继承 List<T>
时是否有默认行为?当您为继承 List<T>
的类创建对象时,它会自动将值添加到父项 List<T>
?如果不是那么上面的代码是如何工作的?自 PeopleCollection
以来 p1 和 p2 存储在哪里没有自己的收藏?
最佳答案
此技术称为 Collection Initializers并且它与问题中提到的构造函数无关。
Collection initializers let you specify one or more element initializers when you initialize a collection type that implements IEnumerable and has Add with the appropriate signature as an instance method or an extension method. The element initializers can be a simple value, an expression, or an object initializer. By using a collection initializer, you do not have to specify multiple calls; the compiler adds the calls automatically.
关于c# - 继承List<T>时如何在没有构造函数的情况下将数据传递给父类? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58508015/