我创建了一个带有重载构造函数的抽象类。我必须创建一个
CMember
类型的列表。我无法将字符串列表转换为 CMember
. 类型的列表
我试图在一个单独的类中创建一个列表,但我似乎无法弄清楚。我正在将文本文件中的数据检索到字符串列表中,我想将其添加到列表“成员”
//below is the abstract class I created
abstract class CMember
{
public CMember(string name_)
{
name_ = Name; //I am also unsure whether I switched these the wrong way around
}
public string Name { get; private set; }
}
List<string> Data = new List<string>();
List<CMember> member = new List<CMember>();
while (!reader.EndOfStream)
{
Data.Add(reader.ReadLine());
}
foreach (var item in Data)
{
member.Add(item);
}
好吧,
List<CMember> member
是一个CMember
的列表,所以我们必须创建CMember
实例并将它们放入member
列表:
foreach (var item in Data)
{
// We must create CMember's from string
// Doesn't compile, please see below
member.Add(new CMember(item));
}
然而,问题出现了。你不能创建一个abstract class
的实例(它是否有构造函数并不重要):
// Doesn't compile
new CMember("some name");
所以你要么把
CMember
变成一个非抽象的:
// If CMember is not abstract its instance can be created
class CMember { ... }
...
List<string> Data = new List<string>();
...
List<CMember> member = new List<CMember>();
foreach (var item in Data)
{
// Here we can call CMember constructor
member.Add(new CMember(item));
}
或者如果你想保持
CMember
是 abstract
你必须创建一些 具体 类的实例:
// Note, that MyCMember is not abstract
class MyCMember : CMember() {
public MyCMember(string _name) : base(_name) {}
}
...
List<string> Data = new List<string>();
...
List<CMember> member = new List<CMember>();
foreach (var item in Data)
{
// Note that we can create an instance of concrete class only: MyCMember
member.Add(new MyCMember(item));
}