powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обрезать массив?
54 сообщений из 54, показаны все 3 страниц
Как обрезать массив?
    #39282930
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Собственно сабж...: имеем массив длиною Lm, нужно оставить его обрезать, те удалить всё, начиная с Cm?
(оба числа > int.MaxValue, те Array.Resize не пойдёт) + по понятным причинам тоже не выход:
Код: c#
1.
2.
3.
4.
                uint[] result = new uint[counter + 1];
                for (uint i = 1; i <= counter; i++)
                    result[i] = List[i];
                List = result;


Заранее спасибо ВС
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282954
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Take
Skip

от List<int> не подойдет ?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282958
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй List<int> у него внутри массив.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282962
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tиспользуй List<int> у него внутри массив.
внутре у него неонка(c).
ТС - Take/Skip тебе в помощь (это linq)
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282965
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282969
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде чем LINQ советовать повнимательнее почитайте
v skopinоба числа > int.MaxValue
int.MaxValue это 2 лярда если что. Если uint то занимают 8+ Гб, а вы копию делать предлагаете.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282978
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПрежде чем LINQ советовать повнимательнее почитайте
v skopinоба числа > int.MaxValue
int.MaxValue это 2 лярда если что. Если uint то занимают 8+ Гб, а вы копию делать предлагаете.

ну пихать такое в один массив это из той же серии, что предлагать работать с ним чз linq, не?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282983
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinкакой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282989
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам массив ты никак не ужмешь, т.к. все варианты "ужимания" через копирование.
https://msdn.microsoft.com/ru-ru/library/bb348051(v=vs.100).aspx Array.Resize<T> - метод
...
Заметки

Этот метод выделяет новый массив заданного размера, копирует элементы из старого массива в новый, а затем заменяет старый массив новым.
поэтому делать свою обертку, которая просто сэмулирует ужимание, а массив останется как был.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282993
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожешь сделать на его основе свою обертку с > int.MaxValue List.cs а что там можно тупо с int на uint переделать?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282997
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tv skopinкакой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs

ага. а лист, по-вашему конечно же не создает нового инстанса массива при изменении размерности?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283000
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a как работает Take?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283001
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopina как работает Take?
как-то так
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283009
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!,

там ничего о механизме выполнения..., те, полагаю, тоже создаёт буферный ...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283011
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Dima Tпропущено...

Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs

ага. а лист, по-вашему конечно же не создает нового инстанса массива при изменении размерности?
Для уменьшения размера вполне возможно оставить исходный массив тем же и используя его съэмулировать меньший.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283012
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и вообще: linq жрёт ресурс...
может как-то с++ приладить?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283017
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДля уменьшения размера вполне возможно оставить исходный массив тем же и используя его съэмулировать меньший.А вот это мысль! переписать равенство... может как-то отдельным потоком обрезать?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283022
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinда и вообще: linq жрёт ресурс...
Потому и жрет, т.к. каждый результат это новый массив.
v skopinможет как-то с++ приладить?
А что конкретно надо с обрезанным массивом делать дальше?
Может тупо завести переменную
Код: c#
1.
uint MyBigArrayLenght;


и использовать ее вместо
Код: c#
1.
MyBigArray.Lenght
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283026
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinда и вообще: linq жрёт ресурс...
может как-то с++ приладить?

ага. смотря с чем сравнивать, если монтулить свой лист, то не жрет :D
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283027
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть же LongLength...
размер, кстати <uint.MaxValue
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283029
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!ага. смотря с чем сравнивать, если монтулить свой лист, то не жрет :Dтам же как-то можно память напрямую обрезать...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283033
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так сделать: <какая-то хрень SetMemory(A, counter * sizeof(uint))>

PS
Код: c#
1.
2.
3.
4.
5.
        /// <summary>
        /// Создание усечённого списка
        /// </summary>
        /// <param name="condition">Условие, при котором элемент должен быть удалён</param>
        public abstract void Cut(Predicate<uint> condition);
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283036
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPS
после вот этого использую:
Код: c#
1.
2.
3.
4.
5.
6.
            uint counter = 0;
            for (uint i = 1; i < UCount; i++)
                if (!condition(i))
                {
                    List[++counter] = List[i];
                }
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283043
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПотому и жрет, т.к. каждый результат это новый массив.
что за бред, Linq работает с Enumerator'ом и ни какие массивы не возвращает. только перечисление.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283049
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesDima TПотому и жрет, т.к. каждый результат это новый массив.
что за бред, Linq работает с Enumerator'ом и ни какие массивы не возвращает. только перечисление.
вот-вот.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283053
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesDima TПотому и жрет, т.к. каждый результат это новый массив.
что за бред, Linq работает с Enumerator'ом и ни какие массивы не возвращает. только перечисление.
Верно, не совсем правильно написал, но чтобы перечисление превратить в массив, как ТС хочет, то надо ToArray(), т.е. новый массив.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283057
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinwinsky!ага. смотря с чем сравнивать, если монтулить свой лист, то не жрет :Dтам же как-то можно память напрямую обрезать...
Можно не копировать, а использовать часть исходного массива.

Если обрезание тебе надо из-за того что "Out of memory" выходит, то переделывай свой массив на массив массивов, т.е. не один на > int.MaxValue элементов, а например 16, а вокруг обертку которая эти 16 выдаст за один.

Ты бы поподробнее написал в чем конкретно проблема.

PS winsky! правильно написал "пихать такое в один массив ..." это уже ненормально, сегодня массив у тебя на пределе, а завтра чуть больше станет инфы и начнет вылетать при создании массива. Возможно надо поискать другие алгоритмы, БД какую-нибудь задействовать например.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283059
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тупой вопрос можно? ToArray/ToList -создавая новые объекты умножает память или всё-таки использует как-то первоначальный объект?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283065
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinА тупой вопрос можно? ToArray/ToList -создавая новые объекты умножает память или всё-таки использует как-то первоначальный объект?
Он создает новый объект, т.к. старый никуда не девается. Т.е. копирование. Это в случае если массив int, с ссылочными типами - копируются ссылки, копии самих объектов не создаются.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283066
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPS winsky! правильно написал "пихать такое в один массив ..." это уже ненормально, сегодня массив у тебя на пределе, а завтра чуть больше станет инфы и начнет вылетать при создании массива. Возможно надо поискать другие алгоритмы, БД какую-нибудь задействовать например.Это задачка, к практике никакого отношения... Задача, можно на C# решатьЗадача – написать функцию (С++) для удаления из массива чисел типа “uint32_t” значений,

удовлетворяющих некоторому условию. Массив представлен указателем на элементы типа

“uint32_t”, причём значение первого – это количество значений в массиве.

То есть указатель uint32_t* указывает на массив значений N+1. Первое значение равно N, а

последующие N значений – это элементы массива. Например, массив чисел 1,2,2,3 в памяти

выглядит так: 4,1,2,2,3. Если требуется удалить элементы со значением «2», то результат будет

таким: 2,1,3.

Предложите, как минимум три возможных варианта решения, проанализируйте каждое из них,

выберите лучшее для различных условий применения:

 ограниченная память

 ограниченная производительность процессора

 многопоточность – необходимость чтения массива из нескольких параллельных потоков

во время удаления элементовЗадача – написать функцию (С++) для удаления из массива чисел типа “uint32_t” значений,

удовлетворяющих некоторому условию. Массив представлен указателем на элементы типа

“uint32_t”, причём значение первого – это количество значений в массиве.

То есть указатель uint32_t* указывает на массив значений N+1. Первое значение равно N, а

последующие N значений – это элементы массива. Например, массив чисел 1,2,2,3 в памяти

выглядит так: 4,1,2,2,3. Если требуется удалить элементы со значением «2», то результат будет

таким: 2,1,3.

Предложите, как минимум три возможных варианта решения, проанализируйте каждое из них,

выберите лучшее для различных условий применения:

 ограниченная память

 ограниченная производительность процессора

 многопоточность – необходимость чтения массива из нескольких параллельных потоков

во время удаления элементов
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283067
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T. Возможно надо поискать другие алгоритмы, БД какую-нибудь задействовать например.
Задача то неизвестна....
мож MemoryMappedFile спасёт - там всё int64
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283068
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TОн создает новый объект, т.к. старый никуда не девается. Т.е. копирование. Это в случае если массив int, с ссылочными типами - копируются ссылки, копии самих объектов не создаются.ответ очевиден, действительно тупой вопрос...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283069
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
те решается пункт с маленькой памятью...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283075
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinте решается пункт с маленькой памятью...
первым проходом - подсчитать размер нового массива, создать новый нужного размера,
вторым - скопировать, исходный массив - освободить
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283078
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпервым проходом - подсчитать размер нового массива, создать новый нужного размера,
вторым - скопировать, исходный массив - освободитья же первым же проходом:
Код: c#
1.
2.
3.
4.
            uint counter = 0;
            for (uint i = 1; i < UCount; i++)
                if (!condition(i))
                    List[++counter] = List[i];
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283080
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinте решается пункт с маленькой памятью...
Задание перечитай
авторТо есть указатель uint32_t* указывает на массив значений N+1. Первое значение равно N, а

последующие N значений – это элементы массива. Например, массив чисел 1,2,2,3 в памяти

выглядит так: 4,1,2,2,3. Если требуется удалить элементы со значением «2», то результат будет

таким: 2,1,3.

тут все тупо и просто, переносишь все нужные значения в начало массива и в нулевой элемент пишешь их количество. Не тот ЯП ты выбрал, там же написано С++ и указатели, а в С++ нет размера массива, есть указатель на начало и отдельно размер.
А смысл "маленькой памяти" в том что ты вообще не используешь дополнительную память, а обходишься той что уже есть.

И ХЗ с чего ты решил что массив в C# может быть > int.MaxSize ? Вроде невозможно это, нагуглить не смог, подумал раз ты его создал, то может путаю.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283082
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, уже на 0,5 ярде возникает исключение(((
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283090
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TА смысл "маленькой памяти" в том что ты вообще не используешь дополнительную память, а обходишься той что уже есть.А как это сделать в с#?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283093
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИ ХЗ с чего ты решил что массив в C# может быть > int.MaxSize ? Вроде невозможно это, нагуглить не смог, подумал раз ты его создал, то может путаю.на ноуте не даёт, а на стационаре (32Г оперативки) дал...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283094
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinDima TА смысл "маленькой памяти" в том что ты вообще не используешь дополнительную память, а обходишься той что уже есть.А как это сделать в с#?
что сделать? по индексу 0 - поместить новое значение длины, память останется занятой.
нужно отдать память - только копирование (явное иди неявное) и похер c# или C
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283096
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinна ноуте не даёт, а на стационаре (32Г оперативки) дал...
не уверен, что учебное задание понято правильно
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283097
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилv skopinпропущено...
А как это сделать в с#?
что сделать? по индексу 0 - поместить новое значение длины, память останется занятой.
нужно отдать память - только копирование (явное иди неявное) и похер c# или C
те было бы решением:
Код: c#
1.
2.
3.
4.
5.
            uint counter = 0;
            for (uint i = 1; i < UCount; i++)
                if (!condition(i))
                    List[++counter] = List[i];
            List[0] = counter;


И ВСЁ?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283098
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели нельзя никак хвост выкинуть???
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283099
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinнеужели нельзя никак хвост выкинуть???
нельзя.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283119
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно, спасибо всем! ясно всё...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283133
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил и похер c# или C
Не похер, точнее похер в рамках ТЗ где выбор С# или C++, а в С есть realloc() но это к теме не относиться.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283137
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Похер, ибо realloc может вызвать переразмещение и при уменьшении размера выденой памяти
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283140
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima T,

Похер, ибо realloc может вызвать переразмещение и при уменьшении размера выденой памяти
Может вызвать, а может не вызвать.
Не факт что realloc() на каком-нибудь девайсе с кастрированной памятью будет раскидываться ею как c#. Вобщем от рантайма все зависит.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283146
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Не "раскидываться" памятью, а бороться с фрагментацией

Фрагментация с# тож касается
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283152
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилФрагментация с# тож касается
Сборщик мусора .net может дефрагментировать память, это дорого но реализуемо, в отличии от С/С++.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283159
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можнопопробовать

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
 internal class Program
    {
        private static void Main()
        {
            unsafe
            {
                var buffer = (int*)Memory.Alloc(100 * sizeof(int));
                Console.WriteLine("*{0}", (int)buffer);
                for (var i = 0; i < 100; i++)
                    Console.WriteLine(buffer[i]);

                var buffer2 = (int*)Memory.ReAlloc(buffer, 10 * sizeof(int));
                Console.WriteLine("*{0}", (int)buffer2);
                for (var i = 0; i < 10; i++)
                    buffer2[i] = 10;
                for (var i = 0; i < 100; i++)
                    Console.WriteLine(buffer2[i]);
                
                Memory.ReAlloc(buffer2, 0);
                
            }
            Console.Read();
        }
    }

    public unsafe class Memory
    {
        static readonly int Ph = GetProcessHeap();

        public static void* Alloc(int size)
        {
            var result = HeapAlloc(Ph, HEAP_ZERO_MEMORY, size);
            if (result == null) throw new OutOfMemoryException();
            return result;
        }
        public static void Free(void* block)
        {
            if (!HeapFree(Ph, 0, block)) throw new InvalidOperationException();
        }

        public static void* ReAlloc(void* block, int size)
        {
            var result = HeapReAlloc(Ph, HEAP_ZERO_MEMORY, block, size);
            if (result == null) throw new OutOfMemoryException();
            return result;
        }

        const int HEAP_ZERO_MEMORY = 0x00000008;

        [DllImport("kernel32")]
        static extern bool HeapFree(int hHeap, int flags, void* block);
        [DllImport("kernel32")]
        private static extern int GetProcessHeap();
        [DllImport("kernel32")]
        private static extern void* HeapAlloc(int hHeap, int flags, int size);

        [DllImport("kernel32")]
        private static extern void* HeapReAlloc(int hHeap, int flags, void* block, int size);
          

    }



а вообще, так красивее

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
 internal class Program
    {
        private static void Main()
        {
            int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            var res = array.Part(0,7);
            Console.WriteLine(res.ElementAt(2));
            foreach (var re in res)
            {
                Console.Write("{0},", re);
            }
            while (true)
            {
                
            }
        }
    }

    internal static class Helper
    {
        public static IEnumerable<T> Part<T>(this T[] array, int start, int finish)
        {
            for (var i = start; i <= finish; i++)
                yield return array[i];
        }
    }
    //3
    //1,2,3,4,5,6,7,8,


...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283166
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИзопропилФрагментация с# тож касается
Сборщик мусора .net может дефрагментировать память, это дорого но реализуемо, в отличии от С/С++.
Может, но в текущей реализации большие фрагменты - не трогает
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283865
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиможнопопробовать

а вообще, так красивее

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
 internal class Program
    {
        private static void Main()
        {
            int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            var res = array.Part(0,7);
            Console.WriteLine(res.ElementAt(2));
            foreach (var re in res)
            {
                Console.Write("{0},", re);
            }
            while (true)
            {
                
            }
        }
    }

    internal static class Helper
    {
        public static IEnumerable<T> Part<T>(this T[] array, int start, int finish)
        {
            for (var i = start; i <= finish; i++)
                yield return array[i];
        }
    }
    //3
    //1,2,3,4,5,6,7,8,



вообще-то Take & Skip где-то так и реализованы...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283900
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!,
так этот ж я предложил, в живую, рука бога..
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обрезать массив?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]