Hallo allerseits, in meiner Arbeit (und früher in meinem Studium) verwende ich oft C # und diese Sprache ist mir vertraut geworden, wie sie sagen. Nachdem ich mich entschlossen hatte, ein wenig in der Programmierung zu üben, schrieb ich einen Konsolentexteditor für Linux. Ich werde die gesammelten Erfahrungen kurz beschreiben.
In Mono wird die System.Console-Klasse nicht vollständig unterstützt, aber Mono ist insofern bemerkenswert, als Sie wie in .NET P / Invoke verwenden können, um Methoden nativer C / C ++ - Linux-Bibliotheken aufzurufen.
In meinem Fall war es eine Ncurses-Bibliothek. Es sieht so aus:
public class Curses {
Alle ncurses-Methoden in diesem Projekt wurden nach Bedarf verbunden, falls die System.Console nicht richtig funktionierte, aber wenn die Standardmethode funktionierte, wurde das Leben viel einfacher.
Zum Beispiel empfängt die Methode ncurses wgetch () zwei Bytes anstelle von einem für Unicode-Zeichen, und für das kyrillische Layout müsste ich eine komplexere Methode zum Übergeben des Zeigers verwenden. Mit der Standardkonsole.ReadKey konnte der gesamte Code verwaltet und Funktionstasten einfach von Textzeichen getrennt werden.
Es gab keine Probleme beim Lesen und Schreiben von Dateien, und alles funktionierte ordnungsgemäß wie in .NET

Als alles stabil funktionierte, wurde versucht, dieses Notebook unter Windows zu erstellen. Um keine PDCurses aus den Quellen zu sammeln, habe ich eine fertige DLL von MinGW genommen, nämlich libpdcursesw.dll, und sie hat als Ersatz für ncurses gute Arbeit geleistet.
Ich brauchte nicht einmal Mono, um ein Notebook zu erstellen. Ich habe gerade die MonoDevelop-Lösung in Visual Studio ohne Abenteuer geöffnet.
Das einzige, was angepasst werden musste, war die Ausgabe an die Konsole. Ich musste mvwprintw aufgeben und Print neu schreiben. Die Ausgabe funktionierte und die Änderungen im Code waren minimal:
public void Print(int x, int y, string message) { Console.SetCursorPosition(x, y); Console.Write(message); }
Ich musste auch die Größe des Arbeitsbereichs und Methoden zum Ändern der Farbe des Textes anpassen.
All dies hat mich überzeugt, dass C # für Aufgaben unter Linux und der Lösung gut geeignet ist. In diesem Fall ist es einfach, auf Windows zu portieren.
Die vollständige Implementierung ist auf
GitHub verfügbar, dem Hauptzweig für Linux und Windows für Windows.