Установка имени объекта в массиве объектов в C#

#c# #arrays #winforms #object

#c# #массивы #winforms #объект

Вопрос:

У меня есть двумерный массив из 5 столбцов и 5 строк, всего 25 ячеек. Пользователь вводит свое имя и выбирает, какие строки и столбцы. Значения строк и столбцов используются для определения индекса в массиве объектов. Я не уверен, как задать имя конкретному объекту в массиве. У меня есть класс seat с атрибутом name, поэтому я хочу использовать name для присвоения имени объекту в массиве объектов. Я попытался задать имя, используя это:

 bookings[row - 1, col - 1].setName(name);
  

Мой класс seat:

 namespace Movie
{
     class Seat
    {
        private String name;
        private Boolean booked;
        public string Name { get => name; set => name = value; }


        public void book(String name)
        {
            this.name = name;
        }

        public Boolean isBooked()
        {
            return booked;
        }
        public Seat(string nameIn)
        {
            name = nameIn;
        }

        public Seat() {
            name = "";
        }
    }
}
  

Комментарии:

1. Пожалуйста, покажите код вашего seat класса. Я предполагаю, что вы хотите bookings[row - 1, col - 1].Name = "foo"; но я не могу сказать, не видя кода

2. Пожалуйста, не объясняйте и не уточняйте свой вопрос здесь, в комментариях. Вместо этого отредактируйте и улучшите сам вопрос (было бы неплохо обратить внимание на хорошее форматирование ;-)).

3. К вашему сведению: если вы не хотите использовать уведомления об изменении свойств или позволить получателю или установщику свойств выполнять какие-либо другие действия, кроме простой настройки резервного поля, вы могли бы просто использовать так называемые автоматически реализуемые свойства : public string Name { get; set; } Аналогично, вы также можете сделать IsBooked автоматическим свойством, например public bool IsBooked {get; private set;} . Обратите внимание на частный установщик, который позволяет только самому Seat объекту изменять значение этого свойства…

Ответ №1:

Кажется, вы пришли из мира Java, где доступ к полям осуществляется методами «get» и «set». В C # это не распространено.

Получить доступ к свойству можно следующим образом:

 bookings[row - 1, col - 1].Name = "new name";