Suren97 Ответов: 2

C# Как удалить пользователя в массиве


у меня есть пользовательский массив`
User[] users = new User[]
        {
             new User ("Petros", "Petrosyan", 20),
             new User ("Poghos", "Poghosyan", 22),
             new User ("Valod", "Hakobyan", 23),
             new User ("Vazgen", "Hovhannisyan", 19),
             new User ("Ruben", "Martirosyan", 25),
        };

и контроллер класса, который имеет функцию удаления.Нужен мне, когда я вызвать функцию "Удалить" в главном например пользователи.удалить(2); он удаляет элементы второй показатель в мое время, например, нового пользователя ("Valod", "Акопян", 23),

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

Я пытался вот так`
public void delete(int index)
        {
            int current_index = 0;
            User[] nor_zang = new User[users.Length - 1];
            for (int i = 0; i < users.Length; i++)
            {
                if (i != index)
                {
                    nor_zang[current_index] = users[i];
                    current_index++;
                }
            }
            users = nor_zang;
            
        }



Main

Controller c = new Controller();
c.delete(2);

но это не работает, и в чем моя вина?

2 Ответов

Рейтинг:
0

OriginalGriff

Вероятно, проблема в том, что в новом контроллере нет никаких элементов - но по этим фрагментам кода мы ничего не можем сказать.
Так что все будет зависеть от тебя. Начните с отладчика и посмотрите, что именно происходит.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
0

Dirk Bahle

Я использовал этот код, чтобы найти проблему (скопируйте и вставьте в проект консольного приложения C# ):

OriginalGriff прав, если вы ожидаете, что кто - то поможет вам, вы должны дать четкое заявление о том, что это не работает, и дать достаточно evenidence, чтобы проверить то, что вы смотрите-мне просто пришлось закомментировать одну строку и немного улучшить читабельность функции delete, передав параметры и вернув результат ...надеюсь, это поможет ...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    public class User
    {
        public User(string name, string lastname, int age)
        {
            Name = name;
            LastName = lastname;
            Age = age;
        }

        public string Name { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        public static User[] delete(int index, User[] users)
        {
            int current_index = 0;
            User[] nor_zang = new User[users.Length - 1];

            for (int i = 0; i < users.Length; i++)
            {
                if (i != index)
                {
                    nor_zang[current_index] = users[i];
                    current_index++;
                }
            }
////        users = nor_zang;

            return nor_zang;
        }

        static void Main(string[] args)
        {
            User[] users = new User[]
            {
                 new User ("Petros", "Petrosyan", 20),
                 new User ("Poghos", "Poghosyan", 22),
                 new User ("Valod", "Hakobyan", 23),
                 new User ("Vazgen", "Hovhannisyan", 19),
                 new User ("Ruben", "Martirosyan", 25),
            };

            var result = delete(2, users);
        }
    }
}