Frage

Ich verwende StreamWriter auf C# WinForms

Ich muss Informationen an den "Schriftsteller" schreiben, wie Sie sehen können.

Mache ich etwas falsch, da das Feld "Schriftsteller" Syntaxfehler hat?

Ich erhalte eine Nachricht mit der Aufschrift:

"'Writer' ist ein 'Feld', wird aber wie ein 'Typ' verwendet."

Irgendwelche Ideen bitte? Mein Code ist unten

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

    }
War es hilfreich?

Lösung

Sie können keine Aussagen in einem Feld haben, die sich nicht in einer Methode befinden (Konstruktor oder andere).

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

Sie sollten auch darauf achten, das richtige Gehäuse zu verwenden - writer.write existiert nicht, wohingegen writer.Write tut.

In meinem Beispiel habe ich erklärt writer als lokale Variable der MyMethod Methode.

Lesen Sie über C# Fields hier.

Andere Tipps

Wenn Sie möchten, dass dies ausgeführt wird, wenn die Klasse "erstellt" ist, verwenden Sie den Konstruktor:

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

Verwenden Sie auch die using Aussage, um den Strom ordnungsgemäß entsorgt zu haben.

Bearbeiten: Sofern Sie keine besondere Verlangen nach Stream haben, können Sie die statische WriteAlltext -Methode der Dateiklasse verwenden:

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

Auf diese Weise müssen Sie sich keine Sorgen machen, dass Sie das Schließen/Entsorgen und auch nicht anrufen müssen ToString() Methode jeder Klasse, wie sie automatisch durch die Verwendung der durchgeführt wird Concat.

Zuerst haben Sie den Code, der zu keiner Methode gehört, wie Oded antwortete.

Zweitens dein Write() ist richtig, aber write() (Kleinbuchstaben erster Buchstabe) ist nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top