在char数组的某个位置添加元素?

时间:2018-07-24 04:15:39

标签: c# arrays

想要在char数组的某个位置添加元素。尝试使用Concat,但显示错误,也许缺少参考。还试图找到类似的问题,但没有找到。

请参见以下代码,并在数组的末尾以及该数组的任何索引处添加元素。

                         char[] c = { 'a','b','c','d' };

                         //add elements.

                         // c.Concat//c.add//[c.Length] = 'e';                 

谢谢。

4 个答案:

答案 0 :(得分:4)

数组大小是静态的,因此您不能向其中添加元素。但是,如果您确实要在其中插入元素,则可以resize数组,然后将元素从所需位置向右移动一个位置,然后设置新元素。例如,您可以具有以下功能:

public static void InsertInArray(ref char[] array, char element, int pos)
{
    // Check that index is inside the bounds
    if (pos < 0 || pos > array.Length)
    {
        throw new IndexOutOfRangeException();
    }

    // Resize the array
    Array.Resize(ref array, array.Length + 1);

    // Shift elements one place to the right, to make room to new element
    for (int i = array.Length - 1; i > pos; i--)
    {
        array[i] = array[i-1];
    }

    // Set new element
    array[pos] = element;
}

然后,例如:

public static void Main()
{       
    var myChars = new char[] { 'b', 'c', 'e' };

    // Insert in position 0
    InsertInArray(ref myChars, 'a', 0);

    // Print array: a,b,c,e
    Console.WriteLine(string.Join(",", myChars));

    // Insert in position 3
    InsertInArray(ref myChars, 'd', 3);

    // Print array: a,b,c,d,e
    Console.WriteLine(string.Join(",", myChars));

    // Insert in position 5
    InsertInArray(ref myChars, 'f', 5);

    // Print array: a,b,c,d,e,f
    Console.WriteLine(string.Join(",", myChars));
}

完整示例:https://dotnetfiddle.net/pLhTzP

答案 1 :(得分:2)

您可以尝试以下方法:

  var myList = new char [] {'a','b','d','e'} .ToList();
myList.Insert(2,'c');
//查看结果:“ a,b,c,d,e”
 

答案 2 :(得分:1)

数组具有此缺点,它具有固定的大小,并且要添加元素,您必须调整其大小,这不方便。

我建议您使用一些集合,例如List来执行此类操作。

例如:

List<char> chars = new List<char>{ 'a','b','c','d' };
// add character at the end
chars.Add('e');

您可以阅读更多here

答案 3 :(得分:0)

使用这样的东西:

var list = c.ToList();
list.Insert(int index, char item)