Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Неизвестное число массивов методу.

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 22.03.2015, 20:47   #1
 Разведчик
Аватар для JKHKJgj
 
JKHKJgj никому не известный тип
Регистрация: 06.09.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Неизвестное число массивов методу.

Доброго времени суток уважаемые коллеги.
Подскажите пожалуйста как можно в функцию передать неизвестное число массивов. В моём случае массивы байт для их последующей склейки в 1 массив.
вот пример что мне нужно.

передаю в неё 3 массива для примера.

arr1{1,2,3}, arr2[4,5,6], arr4[7,8,9] возвращает arr[1,2,3,4,5,6,7,8,9]

Так не работает к сожалению, в гугле был ничего не нашел.
Код:
public byte[] ArrayCombination(params byte[] arrs)
сейчас делаю так но в коде прямо в разделе логики, что не красиво

Код:
arr1.CopyTo(arr, 0);
arr2.CopyTo(arr, arr1.Length);
arr3.CopyTo(arr, arr1.Length + arr2.Length);
PS: несколько перегруженных методов тоже не особо хочется создавать, душа требует красоты и минимизации кода.

Решение.

Код:
	// Объединяет одномерные массивы байт в 1 массив: arr1{1,2,3}, arr2[4,5,6], arr4[7,8,9] возвращает  arr[1,2,3,4,5,6,7,8,9]
	public byte[] ArrayCombination(params byte[][] arrs)
	{
		int ell = 0;
		int cx = 0;

		for (int i = 0; i < arrs.Length; i++) ell += arrs[i].Length;

		byte[] buffer = new byte[ell];

		for (int i = 0; i < arrs.Length; i++)
			for (int s = 0; s < arrs[i].Length; s++)
			{
				buffer[cx] = arrs[i][s];
				cx++;
			}
		return buffer;
	}
}

Последний раз редактировалось JKHKJgj; 22.04.2015 в 18:35. Причина: добавлено решение.
  Ответить с цитированием
Старый 22.03.2015, 20:54   #2
Почетный Пользователь
 Сержант
Аватар для MembRupt
 
MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(
Регистрация: 18.07.2013
Сообщений: 148
Популярность: 83981
Сказал(а) спасибо: 564
Поблагодарили 258 раз(а) в 195 сообщениях
 
По умолчанию Re: Неизвестное число массивов методу.

public List<byte> ArrayCombination(List<List<byte>> arrs) ?
  Ответить с цитированием
Пользователь сказал cпасибо:
JKHKJgj (19.04.2015)
Старый 22.03.2015, 21:20   #3
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Неизвестное число массивов методу.

Красиво - именно через params, может вы что то делаете не так?
  Ответить с цитированием
Пользователь сказал cпасибо:
JKHKJgj (19.04.2015)
Старый 22.03.2015, 21:39   #4
Почетный Пользователь
 Сержант
Аватар для MembRupt
 
MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(
Регистрация: 18.07.2013
Сообщений: 148
Популярность: 83981
Сказал(а) спасибо: 564
Поблагодарили 258 раз(а) в 195 сообщениях
 
По умолчанию Re: Неизвестное число массивов методу.

Цитата:
Сообщение от SinyssПосмотреть сообщение
Красиво - именно через params, может вы что то делаете не так?

Судя по примерам на msdn - функция у автора принимает переменное количество байт, а не переменное количество массивов байт
  Ответить с цитированием
Старый 22.03.2015, 21:54   #5
 Разведчик
Аватар для JKHKJgj
 
JKHKJgj никому не известный тип
Регистрация: 06.09.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Неизвестное число массивов методу.

Нет именно неизвестное число массивов, их может быть и 3 и 6, ну и конечно в каждом массиве неизвестное число элементов может быть. Массивы байт которые будут передаваться одномерные.

Добавлено через 4 минуты
Цитата:
Сообщение от SinyssПосмотреть сообщение
Красиво - именно через params, может вы что то делаете не так?

Да я этого не отрицаю вполне возможно, у меня не получилось, да и на msdn ничего про переменное число массивов не говориться.

Добавлено через 9 минут
Цитата:
Сообщение от MembRuptПосмотреть сообщение
public List<byte> ArrayCombination(List<List<byte>> arrs) ?

С этим я вообще понять не могу, возможно массивы нужно приводить к другому типу перед передачей.

Последний раз редактировалось JKHKJgj; 22.03.2015 в 22:03. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 22.03.2015, 22:16   #6
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Неизвестное число массивов методу.

Цитата:
Да я этого не отрицаю вполне возможно, у меня не получилось, да и на msdn ничего про переменное число массивов не говориться.

Не, стоп, MembRupt прав должно быть не byte[] а byte[][]
  Ответить с цитированием
Пользователь сказал cпасибо:
JKHKJgj (19.04.2015)
Старый 22.03.2015, 22:59   #7
 Разведчик
Аватар для JKHKJgj
 
JKHKJgj никому не известный тип
Регистрация: 06.09.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Неизвестное число массивов методу.

Да спасибо огромное вот так всё работает, про это вот [][] я бы сам вероятно не дошел, при чём тут двумерный массив вроде, а нет работает ))
Код:
public byte[] ArrayCombination(params byte[][] arrs)
  Ответить с цитированием
Старый 22.03.2015, 23:18   #8
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Неизвестное число массивов методу.

Цитата:
Да спасибо огромное вот так всё работает, про это вот [][] я бы сам вероятно не дошел, при чём тут двумерный массив вроде, а нет работает ))

Ну всё верно, это массив массивов, двухмерный в шарпе [,]
  Ответить с цитированием
Пользователь сказал cпасибо:
JKHKJgj (19.04.2015)
Старый 22.03.2015, 23:38   #9
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Неизвестное число массивов методу.

Я бы написал свой класс.
Код:
public class OwnArray
        {
            private byte[] _Array = new byte[0];
            public int Length { get { return _Array.Length; } }
            public OwnArray()
            { }
            public OwnArray(params byte[][] inputarray)
            {
                _Array = new byte[0];
                for (int i = 0; i < inputarray.Length; i++)
                {
                    AddArray(inputarray[i]);
                }
            }
            public OwnArray(params byte[] input)
            {
                AddAsArray(input);
            }
            public void AddArray(byte[] input)
            {
                int old = _Array.Length;
                Array.Resize(ref _Array, old + input.Length);
                Array.Copy(input, 0, _Array, old, input.Length);
            }
            public void AddAsArray(params byte[] input)
            {
                byte[] temp = new byte[input.Length];
                for (int i = 0; i < input.Length; i++)
                {
                    temp[i] = input[i];
                }
                AddArray(temp);
            }
            public byte this[int i]
            {
                get
                {
                    return _Array[i];
                }
                set
                {
                    _Array[i] = value;
                }
            }
        }
Удобно очень
Код:
                OwnArray MyArray = new OwnArray(0xFF, 0xFF, 0xFF, 0x10);
                MyArray.AddAsArray(0x00, 0x00, 0x00, 0x00, 0x00);
                MyArray.AddAsArray(0xFF, 0xFF, 0xFF);
                for (int i = 0; i < MyArray.Length; i++)
                {
                    Console.WriteLine(MyArray[i]);
                }
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Пользователь сказал cпасибо:
JKHKJgj (19.04.2015)
Старый 22.03.2015, 23:50   #10
 Разведчик
Аватар для JKHKJgj
 
JKHKJgj никому не известный тип
Регистрация: 06.09.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Неизвестное число массивов методу.

Ага я класс отдельный и написал ) Один класс по работе с памятью, читает пишет ищет, и этот с массивом. Мне это нужно было чтобы куски байт кода объединять, адреса смещений и.т.д высчитываются автоматически а код мы заранее вручную пишем и вот потом просто это закинул в функцию и пиши ответ в память. А за код благодарю.

Последний раз редактировалось JKHKJgj; 23.03.2015 в 00:20. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 23.03.2015, 12:47   #11
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Неизвестное число массивов методу.

если правильно помню такой массив [][] называется рванным или же массивом массивов ))
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массивов Hermein Web-программирование и технологии 1 27.09.2011 06:18
[Помогите!] Слияние массивов и упорядочивание 108omg Вопросы и ответы, обсуждения 4 21.12.2010 13:53

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net