Member 10585568 Ответов: 2

Почему этот исходный код дает вывод "system. int32 []" вместо значений объединенного массива.


using System;
using System.Collections.Generic;


namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Program dn = new Program();

            int[] array1 = { 1, 2, 3 };
            int[] array2 = { 1, 2, 3 };
            int[] res = dn.merge(array1, array2);

            Console.WriteLine(res);
        }

        public int[] merge(int[] array1, int[] array2)
        {
            int[] array3 = new int[6];
            int[] arr4 = new int[6];
            int i, j;
            int array1length = array1.Length;
            int array2length = array2.Length;
            //array3 = array1.Concat(array2).ToArray();
            for (i = 0; i < array1length; i++)
            {
                array3[i] = array1[i];
            }

            int FinalLength = array1length + array2length;
            for (j = 0; j < array2length; j++)
            {
                i++;
                array3[(i - 1)] = array2[j];

            }
            for (int k = 0; k <= arr4.Length; k++)
            {
                arr4 = array3;
            }
            return arr4;
        }
    }
}


Что я уже пробовал:

Я отладил код, и он возвращает точный вывод, то есть значения двух массивов в виде объединенного массива.Но на экране консоли он показывает "system. int32 []".

2 Ответов

Рейтинг:
5

Member 10585568

Извините, сэр, так как я допустил грубую ошибку в своем коде. Я ретифицировал это, и теперь он показывает точный результат.

Изменения приведены ниже :

for (int i = 0; i <= res.Length-1; i++)
     {
         Console.WriteLine("{0}",res[i]);
     }


Рейтинг:
19

2Programmer78

Проблема, которую вы видите, заключается в том, что текст записывается на консоль с помощью консоли.WriteLine () - это результат вызова ToString () для входного объекта. Таким образом, чтобы решить эту проблему, все, что вам нужно сделать, это преобразовать массив в строку самостоятельно. Один из способов сделать это-использовать строку.Присоединиться(). Если вы решите использовать этот метод, то вы замените его:

Console.WriteLine(res);
с:
Console.WriteLine (string.Join(", ", res));

Есть ли в этом смысл?


George Swan

Разве замена не должна быть консольной?WriteLine (строка.Присоединиться(", ".РЭС));

Member 10585568

Спасибо, что выявили мою ошибку.
Здесь я использовал массив int how will it (то есть string.Join (",", res)) работа с массивом int.И я уже присоединил оба массива к другому массиву под названием "res".
Было бы полезно, если бы вы предоставили мне какой-то способ показать значения этого массива в консоли.

George Swan

Строка.Метод Join последовательно преобразует каждый int в вашем массиве в строку и присоединяет его к следующему int, используя", " в качестве разделителя. В итоге вы получаете строку, похожую на эту "1, 2, 3", возвращаемую из метода. Приставка.Затем строку печатает его.

2Programmer78

Вы правы насчет замены, я был не очень осторожен.