【问题标题】:Attempting to create a custom List Class with Constructor尝试使用构造函数创建自定义列表类
【发布时间】:2019-05-22 19:42:35
【问题描述】:

我正在尝试使用具有字符串参数的构造函数创建自定义列表类。

我有一个字符串字段,其中嵌入了多个值。如果它很简单,我可以只使用一个 Split() 但必须分析字符串以将其拆分为各种组件。我虽然可以创建一个自定义 List 类并在构造函数中进行拆分。

Public ComponentList<T> : List<T> where T: Component
{
    Public ComponentList<T> (string componentString)
{}
}

当我尝试创建构造函数时,c# 在参数上抛出错误 - 元组必须至少包含两个元素。

为什么这需要是一个元组?我只想传递 w 字符串。

感谢您的帮助。

【问题讨论】:

  • 请发布产生您描述的错误的实际代码。您可以编辑您的问题并将代码粘贴到您的问题中。当上面的代码转换成有效的C#后,就可以编译了。
  • 这看起来不像是在 Visual Studio 或其他 IDE 中键入的真实代码。 Public 大写,无法编译,类声明缺少class一词。
  • @ScottHannen 他在构造函数中有&lt;T&gt;
  • 是的,问题在于构造函数中的 。有时你只是看不到你在盯着什么。谢谢大家的帮助

标签: c# list class


【解决方案1】:

你必须从构造函数中删除&lt;T&gt;

像这样:

public ComponentList(string componentString):base()
{
}

还要注意我是如何添加调用基类构造函数的:base()

您甚至可以将参数传递给基类,这样您就可以拥有多个与基类上的其他构造函数匹配的构造函数。

例如,您可以有一个传递初始容量的构造函数

public ComponentList(string componentString, int capacity):base(capacity)
{
}

【讨论】:

  • :base() 不是必需的。如果没有显式调用基类构造函数,则自动调用无参数基类构造函数(如果有)。我想知道他真正的问题是什么,因为我找不到让他的伪代码给我关于元组的任何错误的方法。
  • 完美。谢谢你,Darkonekt。
  • @EdPlunkett 我同意......但我的回答是为了说明可能性。展示一些有用的信息,让其他人更容易理解。我知道调用无参数构造函数有点冗长。但它得到了这个想法。这就是为什么我还发布了一个带有实际参数的基本构造函数。
  • @EdPlunkett 顺便说一句,我可以通过将 添加到构造函数来获得元组编译错误.....
  • @Darkonekt 很好,现在我明白了。我只是在看编辑器中的红色曲线。我会记住的。
猜你喜欢
  • 1970-01-01
  • 2023-01-22
  • 2013-10-02
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 2014-01-07
相关资源
最近更新 更多