Autor Beitrag
metrix
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 24.04.08 22:36 
Hallo,

ich bin sehr neu in der Sprache C# aber nicht was Programmierung an sich angeht.
Ich versteh die grundlegenden Sachen, jedoch ist mir der ganze Syntax von C# einfach noch nicht schlüssig.

Kann mir jemand bei diesem Problem helfen?

Zitat:
Error beim Compilen:

Fehler 1 Die Variable des statischen Typs "System.IO.File" kann nicht deklariert werden. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 23 17 ConsoleApplication1

Fehler 2 Es kann keine Instanz der statischen System.IO.File-Klasse erstellt werden. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 23 24 ConsoleApplication1

Fehler 3 Keine Überladung für die Open-Methode nimmt 1 Argumente an. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 24 26 ConsoleApplication1

Fehler 4 Die Variable des statischen Typs "System.IO.File" kann nicht deklariert werden. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 33 17 ConsoleApplication1

Fehler 5 Es kann keine Instanz der statischen System.IO.File-Klasse erstellt werden. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 33 24 ConsoleApplication1

Fehler 6 Keine Überladung für die Open-Methode nimmt 1 Argumente an. C:\Users\martell\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 34 26 ConsoleApplication1



ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
# using System;
 using System.IO;
 using System.Runtime.Serialization;
 using System.Runtime.Serialization.Formatters.Binary;
 using System.Collections.Generic;
 using System.Text;
  
 namespace ConsoleApplication1
 {
     class Program
     {
         static void Main(string[] args)
         {
             Serial st = new Serial();
             st.SerializeNow();
             st.DeSerializeNow();
         }
         public class Serial
         {
             public void SerializeNow()
             {
                 ClassToSerialize c=new ClassToSerialize();
                 File f=new File("temp.dat");
                 Stream s=f.Open(FileMode.Create);
                 BinaryFormatter b=new BinaryFormatter();
                 b.Serialize(s,c);
                 s.Close();
             }
  
             public void DeSerializeNow()
             {
                 ClassToSerialize c=new ClassToSerialize();
                 File f=new File("temp.dat");
                 Stream s=f.Open(FileMode.Open);
                 BinaryFormatter b=new BinaryFormatter();
                 c=(ClassToSerialize)b.Deserialize(s);
                 Console.WriteLine(c.name);
                 s.Close();
             }
         }
         public class ClassToSerialize
         {
             public int age=100;
             public string name="bipin";
         }
     }
 }



Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 25.04.2008 um 00:49


Zuletzt bearbeitet von metrix am Fr 25.04.08 00:21, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 25.04.08 00:43 
Hallo!

Die Klasse File ist eine statische Klasse, daher kannst Du keine Instanz von ihr erstellen. Sie stellt nur Methoden bereit, die aber alle direkt über die Klasse (den Klassennamen) aufgerufen werden.

Um einen FileStream zu erhalten, kannst Du die ebenfalls statische Methode File.Create zum Erzeugen einer neuen Datei bzw. File.Open oder File.OpenRead zum öffnen einer bestehenden Datei (bei OpenRead nur zum Lesen).

Dein Quelltext wird dadurch eigentlich noch kürzer. Ich würde übrigens möglichst mit dem using-Statement arbeiten, weil Du dann direkt auch einen Resourcenschutz mit drin hast:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
             public void SerializeNow()
             {
                 ClassToSerialize c=new ClassToSerialize();
                 BinaryFormatter b=new BinaryFormatter();
                 using(Stream s = File.Create("temp.dat"))
                     b.Serialize(s,c);
             }
  
             public void DeSerializeNow()
             {
                 ClassToSerialize c=new ClassToSerialize();
                 BinaryFormatter b=new BinaryFormatter();
                 using(Stream s = File.OpenRead("temp.dat"))
                      c=(ClassToSerialize)b.Deserialize(s);
                
                 Console.WriteLine(c.name);
             }


Achte auch drauf, dass die Angabe eines Dateinamens ohne Pfad schief gehen kann.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".