Was könnte ich in diesem C# Programm falsch gemacht haben?

... komplette Frage anzeigen

3 Antworten

Das liegt daran, dass innerhalb der statischen Klasse die Objekterzeugung fehlschlägt.

http://stackoverflow.com/questions/7017043/typeinitializationexception-exception-on-creating-an-object

In deinem Fall wird das sicherlich daran liegen, dass die Zeile

public static TcpClient ClientSocket = new TcpClient("localhost", 4662);

eine Exception schmeißt, die dann weitergetragen wird. Du könntest im Debug-Modus mal in die innerException reingucken, was da genau falsch läuft (hast du das Programm als "Release" gestartet?). Das eigentlich Problem könnte schon sein, dass Port 4662 belegt ist bzw. dein Programm versucht, diesen Port mehrfach zu belegen.

Daneben:

  • Wie schon gesagt - niemals Umlaute als Bezeichnernamen verwenden. Das fliegt dir irgendwann eher früher als später um die Ohren
  • Ich würde alle Programmelemente englisch benennen (sprich: das ist ein Quasi-Standard in der Softwareentwicklung), weil dein Quellcode sonst ein komisches Denglisch-Mischmasch ist. Weiterer Vorteil: In der englischen Sprache gibt's keine Umlaute. :)
  • Eine Klasse mit dem Namen "GlobaleVariablen" riecht schwer danach, dass irgendwas in deiner Architektur nicht optimal ist. Für sowas nimmt man in C# Konfigurationsdateien http://openbook.rheinwerk-verlag.de/visual_csharp_2010/visual_csharp_2010_15_003.htm
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von mAin0x
21.06.2016, 11:23

Vielen Dank, ceevee!
Programmierer wie euch sollte es viel mehr geben, Meister :D

1

Kannst du bitte auch das Snippet posten in dem die Klasse verwendet wird. So sieht es ein wenig aus als versuchst du die Klasse als Singleton zu verwenden. Das ist allerdings etwas tricky und selten eine gute Idee.
Generell solltest du vermeiden in Symbolnamen Umlaute zu verwenden. Das mag mit dem C# Compiler noch funktionieren aber es gibt genug Tools die dir dabei um die Ohren fliegen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ceevee
21.06.2016, 09:40

Wobei... wenn der Fragesteller einen richtigen Singleton anstelle einer statischen Klasse nutzen würde, dann sollte sein Problem nicht auftreten. Falls sein Problem das ist, was ich in meiner Antwort vermute...

0

Versuch mal die Klasse GlobaleVariablen vorher zu initialisieren = ein Objekt von ihr zu erzeugen und versuch dann auf die Klassenvariablen zuzugreifen.

Der Fehler tritt normalerweise auf, wenn eine Variable (noch) nicht zugewiesen wurde.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von EightSix
21.06.2016, 08:38

Das ist Quatsch. Was du meinst ist eine Null Referenz - davon ist hier nix zu sehen.

Den Fehler hier gibt es meist bei statischen Feldern und Konstruktoren.

0

Was möchtest Du wissen?