Возврат массива из метода, что в коде не так? [закрыт]
Вопрос вызван проблемой, которая больше не воспроизводится, или опечаткой. Хотя похожие вопросы могут быть уместны на этом сайте, решение для этого вопроса вряд ли поможет будущим посетителям. Обычно можно избежать подобных вопросов написанием и исследованием минимальной программы для воспроизведения проблемы до публикации вопроса.
Закрыт 8 лет назад .
Прошу мне объяснить, что в этом коде не так ?
public void someMethod(string[] cats) < cats = < "tiger", "lion", "leopard" >; >
Визуал студио ругается.
Отслеживать
задан 23 апр 2015 в 16:01
1,502 4 4 золотых знака 22 22 серебряных знака 50 50 бронзовых знаков
Нужно учить теорию. Void вообще ничего не возвращает.
23 апр 2015 в 21:50
В крайнем случае public void someMethod( out string[] cats)
23 апр 2015 в 21:59
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Массивы в C# создаются с помощью ключевого слова new, объявления типа элементов массива, скобок [] и количества элементов в массиве (опционально):
int[] a = new int[2]; int[] b = new int[];
В случае, если массив инициализируется сразу, тип можно опустить (он будет выведен из типов элементов):
int[] b = new [] < 1, 2 >;
А вообще, что вы хотите сделать?
Если установить в переданный массив новые значения в рамках метода, то:
public void someMethod(string[] cats) < cats = new string[] < "tiger", "lion", "leopard" >; >
Если новые значения нужны и после выполнения метода, тогда надо пользоваться ключевым словом ref :
public void someMethod(ref string[] cats) < cats = new string[] < "tiger", "lion", "leopard" >; >
Если вам нужно просто вернуть новые значения, то так:
public string[] someMethod(string[] cats) < return new string [] < "tiger", "lion", "leopard" >; >
Как вернуть массив из метода java
Для того, чтобы вернуть массив из метода в Java , нужно указать тип возвращаемого значения метода как тип массива. Вот пример:
public class MyClass public static int[] getNumbers() int[] array = new int[5]; for (int i = 0; i array.length; i++) array[i] = i; > return array; > >
Этот код создаст метод getNumbers() , который возвращает массив из пяти целых чисел, заполненных значениями от 0 до 4. Чтобы вызвать этот метод и получить возвращаемый массив, можно использовать следующий код:
int[] myArray = MyClass.getNumbers(); // [0, 1, 2, 3, 4]
Как вернуть массив из метода c
Нужно передать массив в функцию, провести над ним некие действия и вернуть его обратно в метод Main.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace FunctionArrayMy < class Program < static int[] PrintArray(int[] arr) < for (int i = 0; i < arr.Length; i++) < arr[i] = arr[i] * 2; >return arr; > static void Main() < int[] w = < 1, 2, 3, 4, 5, 6, 7>; int[] t;int i; t=PrintArray(w); for (i = 0; i < t.Length; i++) < Console.Write(t); Console.Write(' '); >Console.ReadLine(); > > >
Передал я вроде правильно, а вот возвращаться не хочет.
Подскажите что не так?
Последний раз редактировалось Gstar; 13.10.2012 в 15:06 .
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
Попробуй так return arr[0];
Регистрация: 13.10.2012
Сообщений: 8
Так не работает
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
Попробуй объявить локальный массив и выделить ему память и передать ему твой параметр и возвращать не параметр а этот локальный массив.
static int[] PrintArray(int[] arr) < int[] t_arr = new int [arr.Length]; t_arr = arr; for (int i = 0; i < t_arr.Length; i++) < t_arr[i] = t_arr[i] * 2; >return t_ arr; >
Последний раз редактировалось coNsept; 13.10.2012 в 15:16 .
Регистрация: 13.10.2012
Сообщений: 8
Сделал.
Console.Write(t) выводит попрежнему не то: SystenInt32[]
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
| Сделал. Console.Write(t) выводит попрежнему не то: SystenInt32[] |
Консоль выводит то, что вы ей даете. В данном случае она получает на вход переменную «t», и выводит «t.ToString()», унаследованный от базового «object».
И еще: если PrintArray должна отдавать новый массив, и не должна менять старый, то следует немного переписать метод:
static int[] PrintArray(int[] arr) < int[] res = new int[arr.Length]; for (int i = 0; i < arr.Length; i++) < res[i] = arr[i] * 2; >return res; >
возвращение методами массивов
Метод, который возвращает массив, должен иметь тип возвращаемого массива.
Копировать
- using System;
- class One
- //ВНИМАНИЕ. метод должен иметь тип возвращаемого массива
- public int [] Fun( int arg)
- //размер массива
- int size=0;
- /*в переменную размера массива записывается количество
- итераций, когда числа четные, после этого количество
- итераций суммируется и получаем размер массива*/
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- size++;
- >
- >
- //теперь размер массива известен, создаем сам массив
- int [] arra = new int [size];
- //индекс массива
- int index = 0;
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- //запись четных значений в массив
- arra[index++] = i;
- >
- >
- //метод возвращает массив
- return arra;
- >
- >
- class Program
- public static int Main()
- Random R = new Random();
- One O = new One();
- /*создаем массив, присваиваем ему возвращаемый методом массив,
- в качестве аргумента, методу передаем диапазон случайного
- целого числа от 20 до 30*/
- int [] arra = O.Fun(R.Next(20, 30));
- //выводим значения массива на консоль
- foreach ( int i in arra)
- Console.Write( » » , i);
- >
- Console.WriteLine();
- Console.ReadKey();
- return 0;
- >
- >
- using System;
- class One
- //ВНИМАНИЕ. метод должен иметь тип возвращаемого массива
- public int [] Fun( int arg)
- //размер массива
- int size=0;
- /*в переменную размера массива записывается количество
- итераций, когда числа четные, после этого количество
- итераций суммируется и получаем размер массива*/
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- size++;
- >
- >
- //теперь размер массива известен, создаем сам массив
- int [] arra = new int [size];
- //индекс массива
- int index = 0;
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- //запись четных значений в массив
- arra[index++] = i;
- >
- >
- //метод возвращает массив
- return arra;
- >
- >
- class Program
- public static int Main()
- Random R = new Random();
- One O = new One();
- /*создаем массив, присваиваем ему возвращаемый методом массив,
- в качестве аргумента, методу передаем диапазон случайного
- целого числа от 20 до 30*/
- int [] arra = O.Fun(R.Next(20, 30));
- //выводим значения массива на консоль
- foreach ( int i in arra)
- Console.Write( » » , i);
- >
- Console.WriteLine();
- Console.ReadKey();
- return 0;
- >
- >
0 2 4 6 8 10 12 14 16 18 20 22 24