Вопрос

Я использую 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() (строчная первая буква) нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top