Вопрос
Я использую Streamwriter на c# winforms
Мне нужно написать информацию «писателю», как вы можете видеть.
Я делаю что -то не так, как у «писателя» поля 'есть синтаксические ошибки?
Я получаю сообщение с надписью:
«Писатель» - это «поле», но используется как «тип» »
Есть идеи, пожалуйста? Мой код ниже
class Booking
{
//what other details do you need to save at the end?...
public Show bookedShow { get; private set; }
public Seat selectedSeat { get; private set; }
public Show selectedShow { get; private set; }
public Seat finalPrice { get; private set; } //hasnt been defined yet, but this would be the amount of seats selected * the Price
//i will also need customer details which are:
public dateAndTime dateTime { get; private set; }
public Customer custName { get; private set; }
public Customer custAddress { get; private set; }
public Customer custTelephone { get; private set; }
System.IO.StreamWriter writer = new System.IO.StreamWriter(@"C:\BookingInfo.txt"); //open the file for writing.
writer.Write(dateTime.ToString()); //write the current date to the file. change this with your date or something.
writer.write(bookedShow.ToString());
writer.write(selectedShow.ToString());
writer.write(selectedSeat.ToString());
writer.write(finalPrice.ToString());
writer.write(custName.ToString());
writer.write(custAddress.ToString());
writer.write(custTelephone.ToString());
writer.Close();
}
Решение
Вы не можете иметь заявления на поле, которые не находятся в методе (конструктор или другой).
class Booking
{
//what other details do you need to save at the end?...
public Show bookedShow { get; private set; }
public Seat selectedSeat { get; private set; }
public Show selectedShow { get; private set; }
public Seat finalPrice { get; private set; } //hasnt been defined yet, but this would be the amount of seats selected * the Price
//i will also need customer details which are:
public dateAndTime dateTime { get; private set; }
public Customer custName { get; private set; }
public Customer custAddress { get; private set; }
public Customer custTelephone { get; private set; }
public void MyMethod()
{
System.IO.StreamWriter writer = new System.IO.StreamWriter(@"C:\BookingInfo.txt"); //open the file for writing.
writer.Write(dateTime.ToString()); //write the current date to the file. change this with your date or something.
writer.Write(bookedShow.ToString());
writer.Write(selectedShow.ToString());
writer.Write(selectedSeat.ToString());
writer.Write(finalPrice.ToString());
writer.Write(custName.ToString());
writer.Write(custAddress.ToString());
writer.Write(custTelephone.ToString());
writer.Close();
}
}
Вы также должны позаботиться о том, чтобы использовать правильный корпус - writer.write
не существует, тогда как writer.Write
делает.
В моем примере я заявил writer
Как локальная переменная MyMethod
метод
Читайте о C# Fields здесь.
Другие советы
Если вы хотите, чтобы это работало, когда класс создан «создан», используйте конструктор:
public Booking()
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(@"C:\BookingInfo.txt")) //open the file for writing.
{
writer.Write(dateTime.ToString()); //write the current date to the file. change this with your date or something.
writer.Write(bookedShow.ToString());
writer.Write(selectedShow.ToString());
writer.Write(selectedSeat.ToString());
writer.Write(finalPrice.ToString());
writer.Write(custName.ToString());
writer.Write(custAddress.ToString());
writer.Write(custTelephone.ToString());
}
}
Также используйте using
Заявление, чтобы поток был утилизирован должным образом.
РЕДАКТИРОВАТЬ: Если у вас нет особой жалки для потока, вы можете использовать статический метод writealltext класса файла:
public Booking()
{
File.WriteAllText(@"C:\BookingInfo.txt", string.Concat(dateTime, bookedShow, selectedShow, selectedSeat, finalPrice, custName, custAddress, custTelephone));
}
Таким образом, вам не нужно беспокоиться о закрытии/утилизации, а также не нужно вызывать ToString()
метод каждого класса, как это будет выполнено автоматически с помощью Concat
.
Во -первых, у вас есть код, который не принадлежит ни одному методу, как ответил ОДед.
Во -вторых, ваш Write()
правильно, но write()
(строчная первая буква) нет.