Topik ini memandu pembuatan program C# pertama secara lengkap, mulai dari menulis berkas Program.cs, menjalankannya dari terminal, sampai membaca keluarannya. Program ditulis dengan top-level statement, yaitu pernyataan tingkat atas yang membuat program C# tidak perlu lagi dibungkus kelas dan metode Main. Setelah topik ini diselesaikan, siklus menulis, menjalankan, dan memperbaiki program kecil dapat dilakukan secara mandiri.
Program.cs dan top-level statement#
Kode sumber C# disimpan dalam berkas dengan ekstensi .cs. Nama Program.cs adalah konvensi umum untuk berkas yang memuat titik masuk program, yaitu tempat eksekusi pertama dimulai. Sejak C# 9, pernyataan boleh ditulis langsung di bagian atas berkas tanpa deklarasi kelas. Gaya penulisan ini disebut top-level statement (pernyataan tingkat atas) dan hanya boleh muncul pada satu berkas dalam satu program.
Satu berkas hanya boleh memuat satu bagian pernyataan tingkat atas. Berkas lainnya dalam program yang sama tetap berupa deklarasi tipe, seperti kelas atau interface, sebagaimana lazimnya proyek yang sudah berkembang. Batasan ini membuat titik masuk program selalu dapat ditemukan dengan cepat.
Bentuk lama tetap sah dan masih banyak ditemukan pada dokumentasi yang lebih tua. Program tersebut memakai kelas Program dengan metode statis Main sebagai titik masuknya. Perbandingan berikut memperlihatkan gaya tersebut agar tidak asing ketika ditemui di tempat lain.
using System;
class Program
{
static void Main()
{
Console.WriteLine("Halo, C#!");
}
}Halo, C#!Kedua gaya menghasilkan keluaran yang persis sama. Saat kompilator (compiler), perangkat lunak yang menerjemahkan kode sumber menjadi instruksi yang dapat dijalankan, menemukan top-level statement, ia secara otomatis membungkus pernyataan tersebut ke dalam kelas Program dan metode Main. Gaya baru menghilangkan seremoni tersebut, sehingga berkas program pertama cukup berisi pernyataan yang langsung dieksekusi.
Menulis Program.cs#
Buat sebuah folder baru, kemudian buat berkas Program.cs di dalamnya dengan editor teks apa pun. Isi berkasnya persis seperti berikut.
// Program pertama: setiap pernyataan dieksekusi berurutan, dari atas ke bawah.
Console.WriteLine("Halo, C#!");
Console.WriteLine();
Console.WriteLine("Program ini ditulis tanpa kelas dan tanpa metode Main.");
Console.WriteLine("Setiap baris keluaran dihasilkan oleh satu pernyataan Console.WriteLine.");Halo, C#!
Program ini ditulis tanpa kelas dan tanpa metode Main.
Setiap baris keluaran dihasilkan oleh satu pernyataan Console.WriteLine.Baris pertama adalah komentar, yaitu teks yang diawali // dan diabaikan oleh kompilator. Empat pernyataan berikutnya dieksekusi berurutan dari atas ke bawah. Pemanggilan Console.WriteLine() tanpa argumen mencetak satu baris kosong, sedangkan pemanggilan dengan satu argumen mencetak teksnya lalu memindahkan kursor ke baris baru. Perhatikan bahwa penulisan Console wajib diawali huruf besar karena C# peka huruf besar dan huruf kecil.
Menjalankan program dari terminal#
.NET SDK menyediakan command line interface (antarmuka baris perintah) bernama dotnet. Perintah dotnet run --file mengompilasi satu berkas C# lalu langsung menjalankannya tanpa perlu membuat proyek. Masuk ke folder tempat Program.cs berada, kemudian jalankan perintah berikut.
# jalankan berkas Program.cs secara langsung, tanpa membuat proyek
dotnet run --file Program.csHalo, C#!
Program ini ditulis tanpa kelas dan tanpa metode Main.
Setiap baris keluaran dihasilkan oleh satu pernyataan Console.WriteLine.Keluarannya identik dengan yang ditempel di atas karena programnya sama. Perintah ini tidak menghasilkan berkas program di folder kerja, sehingga folder tetap hanya berisi Program.cs. Perubahan pada berkas cukup diikuti dengan menjalankan ulang perintah yang sama.
Apa yang terjadi di balik layar#
Kode sumber C# tidak dijalankan langsung oleh sistem operasi. Kompilator menerjemahkannya menjadi intermediate language (bahasa antara), yaitu instruksi netral yang dipahami oleh runtime .NET, kemudian runtime menerjemahkan instruksi tersebut menjadi instruksi prosesor saat program berjalan. Seluruh proses ini terjadi otomatis setiap kali dotnet run dipanggil. Metode Console.WriteLine menulis teks ke keluaran standar (standard output) terminal, yaitu aliran tempat program umumnya menampilkan teksnya.
Pemanggilan dotnet run --file paling cocok untuk program satu berkas seperti contoh di topik ini. Berkas yang dijalankan dengan cara ini dikompilasi ke folder sementara milik SDK, sehingga folder kerja tetap hanya memuat kode sumbernya. Ketika program tumbuh menjadi banyak berkas dan bergantung pada package pihak lain, program perlu dipindahkan ke proyek dengan berkas .csproj yang mengatur detail build-nya, dan hasil build disimpan pada folder bin dan obj milik proyek tersebut.
Kesalahan umum#
- Titik koma di akhir pernyataan terlupa. Kompilator menampilkan
error CS1002: ; expectedbeserta nomor barisnya. Perbaikannya dengan menambahkan titik koma pada posisi yang disebut pesan error. - Huruf besar dan huruf kecil tertukar. Menulis
console.WriteLinemenghasilkanerror CS0103: The name 'console' does not exist in the current context. Karena C# peka huruf besar dan huruf kecil, namaConsolewajib ditulis persis seperti itu. - Tanda kutip penutup terlupa. String yang tidak ditutup menimbulkan
error CS1010: Newline in constant. Pastikan setiap string dibuka dan ditutup dengan tanda kutip ganda yang berpasangan. - Perintah dijalankan dari folder yang salah. Apabila
dotnet run --file Program.csdipanggil dari folder yang tidak memuat berkas tersebut, kompilasi gagal karena berkasnya tidak ditemukan. Periksa lokasi folder kerja dengan perintahpwdsebelum menjalankannya.
Ringkasan#
- Program C# terkecil cukup berisi pernyataan tingkat atas tanpa kelas dan tanpa metode
Main, sebagaimanaProgram.csyang dibuat pada topik ini. - Perintah
dotnet run --file Program.csmengompilasi dan menjalankan satu berkas C# langsung dari terminal tanpa meninggalkan berkas program di folder kerja. Console.WriteLinemencetak teks beserta pindah baris, sedangkanConsole.WriteLine()tanpa argumen mencetak baris kosong.- Kompilator menampilkan pesan error bernomor (format
CSxxxx) beserta nomor barisnya, sehingga kesalahan sintaks mudah dilacak.
Referensi#
- Top-level statements — Microsoft Learn
— Dokumentasi resmi tentang penulisan program C# tanpa kelas dan metode
Main. - dotnet run command — Microsoft Learn
— Menjelaskan perintah
dotnet run, termasuk opsi--fileuntuk berkas C# tunggal.