无法在Unity中转换通用字符串

c#

我正在尝试声明一个字符串列表并向其添加 DateTime。但是,cannot convert from 'System.Collections.Generic.List<string>' to 'string'当我执行以下操作时出现错误:

    public List<string> AllTime_ = new List<string>();

    void Start () {
        AllTime_.Add(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("HH")).ToList ());

        AllTime_.Add(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("mm")).ToList ());
    }

但是当我通过声明如下所示的 List 来做同样的事情时,它不会抛出任何错误并且运行良好。唯一的问题是重新定义了列表并且列表的大小发生了变化。如何通过添加到列表来尝试解决问题的第一种方法?

    public List<string> AllTime_ = new List<string>();

    void Start () {
        AllTime_ = new List<string> (Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("HH")).ToList ());

        AllTime_ = new List<string> (Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("mm")).ToList ());
    }

回答

AllTime_是一个List<string>所以每个元素都是一个,string而不是一个,List<string>所以Add有一个string作为参数 - 你试图给它一个完整的列表。

唯一的问题是重新定义了列表并且列表的大小发生了变化

这听起来也不完全正确;) 发生的情况是您覆盖了列表。由于您Select的物品数量相同,因此尺寸应该相同。您更想要的是将两个结果合并到一个列表中。

您可能正在寻找 AddRange

AllTime_.Clear();
AllTime_.AddRange(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("HH")));
AllTime_.AddRange(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("mm")));

虽然我想知道为什么将相同的时间添加两次但作为单独的格式?总是将成对的“线”放在一起不是更有意义吗?这也做了两次解析工作。

我可能宁愿做例如

AllTime_.Clear();
foreach(var d in Data.Select(d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture)))
{
    AllTime_.Add(date.ToString("HH"));
    AllTime_.Add(date.ToString("mm"));
}


以上是无法在Unity中转换通用字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>