Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 20.12.2020, 23:38   #1
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 393
Написано 58 полезных сообщений
(для 87 пользователей)
C# Можно ли написать метод с params для изменения размера множества массивов?

Допустим есть несколько массивов:

int[] a = new int[100];
int[] b = new int[100];
int[] c = new int[100];
Хочу чтобы был метод в который с помощю params передавался список массивов и этот метод изменял размер этих массивов, типа как-то так:

public static void ResizeArrays( int newlen, params int[] list){
  for(int i=0;i<list.lenght;i++){
    System.Array.Resize(ref list[i], newlen);
  }
}
Ну и далее управлять размерами массива одной строчкой, вот так:

ResizeArrays(500,a,b,c);
Что-то мне кажется т.к. System.Array.Resize использует ref, то ничего не выйдет...
(Offline)
 
Ответить с цитированием
Старый 22.12.2020, 17:26   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?

Ну ты просто не дописал в params что это массив массивов:
public static void ResizeArrays(int newlenparams int[][] list)
    {
        for (
int i 0< list.Lengthi++)
        {
            
System.Array.Resize(ref list[i], newlen);
        }
    } 
ref в данном случае никак не повлияет, т.к. сам массив это ссылочный элемент. Поэтому в саму функцию передадутся массивы по ссылке.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 25.12.2020, 00:07   #3
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 393
Написано 58 полезных сообщений
(для 87 пользователей)
Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?

Не Pax чуда не произошло
		int[] x=new int[]{6,7,8};
		int[] y=new int[]{60,45,54};
		int[] z=new int[]{54345,56567,65676};

		ResizeArrays (25, x, y, z);
		ResizeArrays (25, x, y, z);
	
		string str="";
		str="x=";
		for (int i = 0; i < x.Length; i++) str += x [i] + ",";
		Debug.Log (str);
		str="y=";
		for (int i = 0; i < y.Length; i++) str += y [i] + ",";
		Debug.Log (str);
		str="z=";
		for (int i = 0; i < z.Length; i++) str += z [i] + ",";
		Debug.Log (str);
Размер массива не меняется...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (29.12.2020)
Старый 25.12.2020, 01:05   #4
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 393
Написано 58 полезных сообщений
(для 87 пользователей)
Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?

Может забить? Скорее всего это невозможно.
(Offline)
 
Ответить с цитированием
Старый 29.12.2020, 01:06   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?

Сообщение от Evgen Посмотреть сообщение
Не Pax чуда не произошло
Размер массива не меняется...
Судя по всему действительно нельзя такое, я думал меняется исходный массив, а получается, что метод resize просто заменяет массив новым. Пользуйся списками)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:53.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com