Halo semuanya, dalam pekerjaan saya (dan sebelumnya dalam studi saya) saya sering menggunakan C # dan bahasa ini telah menjadi akrab bagi saya, seperti yang mereka katakan. Setelah memutuskan untuk berlatih sedikit dalam pemrograman, saya menulis editor teks konsol untuk Linux. Saya akan menjelaskan secara singkat pengalaman yang didapat.
Di Mono, kelas System.Console tidak sepenuhnya didukung, tetapi Mono luar biasa dalam hal itu, seperti di .NET, Anda dapat menggunakan P / Invoke untuk memanggil metode pustaka asli C / C ++ Linux.
Dalam kasus saya, itu adalah perpustakaan ncurses. Ini terlihat seperti ini:
public class Curses {
Semua metode ncurses dalam proyek ini terhubung sesuai kebutuhan, seandainya System.Console tidak berfungsi dengan baik, tetapi jika metode standar berfungsi itu membuat hidup lebih mudah.
Sebagai contoh, metode ncurses wgetch () menerima dua byte alih-alih satu untuk karakter Unicode, dan untuk tata letak Cyrillic saya harus menggunakan metode yang lebih kompleks dengan melewatkan pointer. Menggunakan Konsol standar.ReadKey diizinkan meninggalkan semua kode yang dapat dikelola dan dengan mudah memisahkan tombol fungsi dari karakter teks.
Tidak ada masalah dengan membaca dan menulis file, dan semuanya berfungsi sebagaimana mestinya pada .NET

Ketika semuanya berjalan dengan stabil, upaya dibuat untuk membangun notebook ini di Windows. Agar tidak mengumpulkan PDCurses dari sumber, saya mengambil dll yang sudah jadi dari MinGW, yaitu libpdcursesw.dll dan melakukan pekerjaan yang baik sebagai pengganti ncurses.
Saya bahkan tidak perlu Mono untuk membangun notebook, saya baru saja membuka solusi MonoDevelop di Visual Studio tanpa petualangan.
Satu-satunya hal yang memerlukan penyesuaian adalah output ke konsol, saya harus meninggalkan mvwprintw dan saya menulis ulang Print, output bekerja dan perubahan dalam kode sangat minim:
public void Print(int x, int y, string message) { Console.SetCursorPosition(x, y); Console.Write(message); }
Saya juga harus menyesuaikan ukuran ruang kerja, dan metode untuk mengubah warna teks.
Semua ini meyakinkan saya bahwa C # cukup cocok untuk tugas-tugas di Linux dan solusinya, dalam hal ini mudah untuk port ke Windows.
Implementasi lengkap tersedia di
GitHub , cabang utama untuk Linux dan windows untuk Windows.