【问题标题】:Constructor for a subclass of List<T> C#List<T> C# 子类的构造函数
【发布时间】:2015-05-28 15:03:18
【问题描述】:

这是我的课:

public class CustomList: List<SomeType>{

 SomeType myList;

 public CustomList(List<SomeType> list){
  myList = list;
 }

//some methods
}

我这样初始化它:

CustomList myCustomList = new CustomList(someList);

但是,在访问列表的第一个成员 (myCustomList[0]) 时,我得到: AurgumentOutOfRangeException 错误。

我在自定义列表构造函数和/或初始化中做错了吗?

感谢您的帮助。

编辑:

SomeType 是一个由一些公共变量组成的类:

public class SomeType{
 public string title;
 public string campaign;
}

【问题讨论】:

  • 我看不到您在哪里添加到 List&lt;&gt;。如果myList 是公开的,您可以通过myCustomList.myList 访问您的.ctor 参数值。

标签: c# list class constructor initialization


【解决方案1】:

我假设您希望将 .ctor 参数添加到列表中。所以添加它...

public class CustomList: List<SomeType>{

 public CustomList(List<SomeType> list){
  this.AddRange(list);
 }

//some methods
}

正如 Alexei 在 cmets 中指出的那样,在 C# 中使用此语法调用基类 .ctor 的替代方法:

public class CustomList : List<SomeType> {
    public CustomList(List<SomeType> list) : base(list) { ... }
}

【讨论】:

  • 你是对的,但list 不是一个列表——正如我的代码注释所指出的那样。
  • @Kourosh 所以现在你需要this.AddRange(list) :)
  • base(list) 会更好...但AddRange 也可以。
  • @AlexeiLevenkov:所以...public CustomList(List&lt;SomeType&gt; list) : base(list) { ... }?
  • 您能告诉我如何将 List 转换为 SomeType?
猜你喜欢
  • 2016-03-19
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多