Синтаксис StreamWriter - PullRequest
       22

Синтаксис StreamWriter

0 голосов
/ 26 декабря 2010

Я использую StreamWriter на C # winForms

мне нужно записать информацию в «писатель», как вы можете видеть.

я делаю что-то не так, как поле «писатель»есть синтаксические ошибки?

я получаю сообщение о том, что

"Writer" является "полем", но используется как "тип" "

любые идеи, пожалуйста?мой код ниже

 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();

    }

Ответы [ 3 ]

2 голосов
/ 26 декабря 2010

В поле не может быть операторов, которых нет в методе (конструкторе или другом).

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 # здесь .

1 голос
/ 26 декабря 2010

Если вы хотите, чтобы это выполнялось, когда класс «создан», используйте конструктор:

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, чтобы поток располагался правильно.

EDIT: если у вас нет особой тяги к Stream, вы можете использовать статический метод WriteAllText класса File:

public Booking()
{
    File.WriteAllText(@"C:\BookingInfo.txt", string.Concat(dateTime, bookedShow, selectedShow, selectedSeat, finalPrice, custName, custAddress, custTelephone));
}

Таким образом, вам не нужно беспокоиться о закрытии / удалении, а также не нужновызовите метод ToString() каждого класса, как это будет сделано автоматически с помощью Concat.

0 голосов
/ 26 декабря 2010

Во-первых, у вас есть код, который не принадлежит ни одному методу, как ответил Одед.

Во-вторых, ваш Write() правильный, но write() (строчная первая буква) - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...