Suren97 Ответов: 2

C# - как я могу подсчитать количество элементов в массиве?


например`
DynamicArray d = новый динамический массив(4, 5, 6, 1, 2);
когда я вызову функцию GetLength, она выведет 5.
Приставка.Метода WriteLine(ум.Метода getlength может служить метод());
Он будет печатать "количество элементов равно 5"

Что я уже пробовал:

Я написал эту функцию`

public int GetLength(params int[] x)
{
/- Я не знаю, что здесь пишут.
}

2 Ответов

Рейтинг:
13

OriginalGriff

Попробуй:

public int GetLength(params int[] x)
    {
    return x.Length;
    }


Thomas Daniels

Опереди меня! :смех: +5

OriginalGriff

Я *знал*, что курс машинописи пригодится! ;)

Suren97

Большое спасибо :)
и, пожалуйста, не могли бы вы сказать, как я могу удалить случайный элемент из этого массива?

OriginalGriff

Вы не можете удалить элементы из стандартного массива вообще - как только он выделен, он не может изменить размер. Я не слышал о классе под названием DynamicArray, но есть класс List, который является гибким и позволит вам вставлять и удалять элементы, а также получать доступ к элементам через индекс так же, как если бы это был массив (что он и есть, внутренне - он обертывает массив).

Но...если вы регулярно вставляете или удаляете элементы (из списка или чего-то подобного), вы можете прочитать это:
https://www.codeproject.com/Articles/870013/List-T-Is-it-really-as-efficient-as-you-probably-t
Есть проблемы с производительностью, если количество элементов становится высоким.

Рейтинг:
11

Thomas Daniels

Я не знаю что именно DynamicArray есть, но для завершения фрагмента кода, который у вас есть (получение длины целочисленного массива), вам нужно только вернуть x.Length:

public int GetLength(params int[] x)
{
    return x.Length;
}


Suren97

Большое спасибо :)
и, пожалуйста, не могли бы вы сказать, как я могу удалить случайный элемент из этого массива?

Thomas Daniels

Вы не можете удалить элементы из массивов, но вы можете использовать List<int>, затем сгенерируйте случайное целое число (это допустимый индекс списка), а затем используйте метод RemoveAt: см. документацию List<T> и Random.

Suren97

например, я хочу удалить номер 6, но не могу?

Thomas Daniels

Не с массивом; но вы можете использовать список<int>, а затем вы можете сделать .Remove(6) в списке.

Suren97

если не с массивом, то, например, с чем?

Thomas Daniels

Как я уже сказал, с помощью List<int>

Suren97

я не могу создать функцию, которая удалит из этого какой-либо элемент?
DynamicArray d = новый динамический массив(4, 5, 6, 1, 2);

Thomas Daniels

Но что такое DynamicArray?

Suren97

это класс

Thomas Daniels

Это твой класс? Затем стажеры этого класса решают, можете ли вы удалить что-то из него или нет.

Dave Kreskowiak

Никакого дерьма. Это не часть .NET Framework, поэтому это должно быть что-то, что вы написали. Не видя этого кода, невозможно сказать вам, как это сделать.

Suren97

у меня есть класс DynamicArray, который получает новый DynamicArray(4,5,6,1,2)
мне нужно, когда я вызову функцию d.remove(2), она удалит номер 6 и напечатает 4,5,1,2

Dave Kreskowiak

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

Простой.

Suren97

да, вы правы, пожалуйста, скажите мне, как я должен написать этот код?

Dave Kreskowiak

Я уже это сделал.

Нет, я не собираюсь писать ее для тебя. У меня есть около 2000 строк моего собственного кода, который я должен написать сегодня.

Suren97

ладно :(
Спасибо

Suren97

Пожалуйста, если вы будете свободны, пришлите мне этот код.

Dave Kreskowiak

Этого не случится. Я работаю более 60 часов в неделю над своими собственными вещами. Здесь нет никого, кто сделает за тебя твою работу.