Работа над программой для класса, и я почти на 95% заполнен, но столкнулся с блокпостом. У меня есть класс Flight, который содержит информацию о полете, а также график сидения. Используя окно формы окна, выберите объекты полета, которые я создал, прочитав из текстового файла. Я могу получить значения для каждого свойства из объекта класса, кроме одного, SeatChart.Не могу понять, почему ссылка на объект равна нулю
Вот уместен код в основной программе:
private void lstFlights_SelectedIndexChanged(object sender, EventArgs e)
{
curFlight = (Flight)lstFlights.SelectedItem;
DisplayNewFlightChart();
}
private void DisplayNewFlightChart()
{
int seats = curFlight.Rows * curFlight.Seats;
lstSeatingChart.Items.Clear();
string[] seatChart = curFlight.SeatChart;
for (int x = 0; x <= seats; x++)
{
lstSeatingChart.Items.Add("Seat " + (x + 1) + " " + seatChart[x]);
}
}
А вот код из класса:
class Flight
{
private string mPlane;
private string mDepartureTime;
private string mDestination;
private int mRows;
private int mSeats;
private string[] mSeatChart;
public Flight()
{
}
// Create the overloaded Constructor
public Flight(string planeType, string departureTime,
string destination, int numRows,
int numSeatsPerRow)
{
this.Plane = planeType;
this.DepartureTime = departureTime;
this.Destination = destination;
this.Rows = numRows;
this.Seats = numSeatsPerRow;
this.SeatChart = mSeatChart;
mSeatChart = new string[Rows * Seats];
for (int seat = 0; seat <= mSeatChart.GetUpperBound(0); seat++)
{
mSeatChart[seat] = "Open";
}
}
public string Plane
{
get { return mPlane; }
set { mPlane = value; }
}
public string DepartureTime
{
get { return mDepartureTime; }
set { mDepartureTime = value; }
}
public string Destination
{
get { return mDestination; }
set { mDestination = value; }
}
public int Rows
{
get { return mRows; }
set { mRows = value; }
}
public int Seats
{
get { return mSeats; }
set { mSeats = value; }
}
public string[] SeatChart
{
get { return mSeatChart; }
set { mSeatChart = value; }
}
public void MakeReservation(string passName, int seat)
{
bool seatTaken = false;
if (mSeatChart[seat] != "Open") seatTaken = true;
if (passName != "" && seatTaken == false)
{
mSeatChart[seat] = passName;
}
else
{
MessageBox.Show("Please Enter a Passenger Name, in an unreserved seat");
}
}
Это говорит мне curFlight.SeatChart пустое, даже если я могу pull .Rows и .Seats from curFlight просто отлично. Я не знаю, почему .SeatChart испортил. lstFlights - список объектов полета, извлеченных из текстового файла, и lstSeatingChart - это место, где я хочу отображать список мест.
Я искренне надеюсь, что это не производственный код. добавьте это в 'public Flight() {this.mSeatChart = новая строка [1]; } ' – zaitsman
Можете ли вы предоставить стек? –
Ссылка на объект не указывает на экземпляр объекта System.NullReferenceException на WindowsFOrmasAPplication3.Reservations.DisplayNewFlightCHart() в D: \ Users \ Nathan \ Desktop \ C# Проекты \ program4 \ windowsformsappliocation3 \ Form1.cs: строка 76 – Ozmethod