#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";