【问题标题】:How do I store an array of strings into another array of strings?如何将一个字符串数组存储到另一个字符串数组中?
【发布时间】:2015-06-13 08:09:20
【问题描述】:

我正在尝试将保存人名的旧结构类型数组存储到一个已缩小大小的新字符串数组中,以便我可以用另一种方法对其进行随机播放。

string[] newStringArray = new string[10]

for (int i = 0; i < oldStringArray.Length; i++)
{    
    newStringArray = oldStringArray[i].firstName;//Cannot convert type 'string to 'string[]'
}

foreach (string value in newStringArray)
{
    Console.WriteLine(value);
}

【问题讨论】:

  • 不清楚您要实现什么,您正在定义一个包含十个元素的新数组,然后枚举所有旧元素。是否希望 newStringArray 包含 oldStringArray 的前十个名字?
  • 是的,我确实希望我的 newStringArray 包含 oldStringArray 的前十个名称。
  • 你设置整个数组,使用索引器newStringArray[i] = oldStringArray[i].firstName;
  • 将循环条件从 i

标签: c# arrays string shuffle


【解决方案1】:

您似乎忘记了索引访问器:

string[] newStringArray = new string[10];
for (int i = 0; i < oldStringArray.Length && i < newStringArray.Length; i++)
{
    newStringArray[i] = oldStringArray[i].firstName;
    //             ^
}

【讨论】:

  • 如果 oldStringArray 包含超过 10 个元素,则在访问 newStringArray[10] 时会出现索引越界异常
【解决方案2】:

您可以使用Enumerable.Select 投影您的FirstName 属性,然后使用Enumerable.ToArray 将它们具体化为一个新数组:

string[] firstNames = oldStringArray.Select(x => x.FirstName).ToArray();

【讨论】:

    【解决方案3】:

    您必须声明与旧数组大小相同的新数组。

    string[] newStringArray = new string[oldStringArray.Length];
    

    然后使用索引器设置新数组的元素。

    for (int i = 0; i < oldStringArray.Length; i++)
    {    
        newStringArray[i] = oldStringArray[i].firstName;
    }
    

    【讨论】:

      【解决方案4】:

      如果您只想要前十个名字,请使用

      var firstTenFirstNames = oldStringArray.Select(x => x.FirstName).Take(10).ToArray()
      

      【讨论】:

        猜你喜欢
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        相关资源
        最近更新 更多