www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   C# Можно ли написать метод с params для изменения размера множества массивов? (http://forum.boolean.name/showthread.php?t=20880)

Evgen 20.12.2020 23:38

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, то ничего не выйдет...

pax 22.12.2020 17:26

Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?
 
Ну ты просто не дописал в params что это массив массивов:
PHP код:

public static void ResizeArrays(int newlenparams int[][] list)
    {
        for (
int i 0< list.Lengthi++)
        {
            
System.Array.Resize(ref list[i], newlen);
        }
    } 

ref в данном случае никак не повлияет, т.к. сам массив это ссылочный элемент. Поэтому в саму функцию передадутся массивы по ссылке.

Evgen 25.12.2020 00:07

Ответ: 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);

Размер массива не меняется...

Evgen 25.12.2020 01:05

Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?
 
Может забить? Скорее всего это невозможно.

pax 29.12.2020 01:06

Ответ: C# Можно ли написать метод с params для изменения размера множества массивов?
 
Цитата:

Сообщение от Evgen (Сообщение 318151)
Не Pax чуда не произошло
Размер массива не меняется...

Судя по всему действительно нельзя такое, я думал меняется исходный массив, а получается, что метод resize просто заменяет массив новым. Пользуйся списками)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Перевод: zCarot