Program pertama yang klasik mencetak satu baris teks. Di C#, bentuknya seperti ini:
Output:
Hello, World!
Baris demi baris
using System;membuatmu bisa menulisConsole, bukan nama lengkapnyaSystem.Console.Consoleadalah class di namespaceSystem(lihat namespace dan using).class Programmendeklarasikan sebuah class. Semua kode C# berada di dalam sebuah tipe; namaProgramhanya kebiasaan, bukan keharusan.static void Main()adalah titik masuk program. Saat program dimulai, runtime mencari method static bernamaMainlalu memanggilnya.staticberarti method ini milik class itu sendiri, jadi tidak perlu membuat objek terlebih dahulu.voidberarti method ini tidak mengembalikan apa pun.Console.WriteLine("Hello, World!");memanggil methodWriteLinedengan argumen berupa string. Setiap pernyataan diakhiri titik koma.- Kurung kurawal
{ }menandai badan class dan badan method.
C# membedakan huruf besar dan kecil. console.writeline dan main adalah nama yang berbeda dari Console.WriteLine dan Main, dan keduanya tidak ada.
Console.WriteLine vs Console.Write
WriteLine menambahkan baris baru setelah teks. Write tidak, jadi output berikutnya berlanjut di baris yang sama. Keduanya menerima tipe apa saja, bukan hanya string: angka, boolean dan objek dikonversi dengan method ToString() miliknya.
Output:
Loading.. done
42
True
Item: coffee
coffee costs 3.20
coffee costs 3.20
Perhatikan bahwa true dicetak sebagai True: itulah yang dikembalikan bool.ToString(). Bentuk $"...", yang disebut string interpolation, adalah bentuk yang paling sering akan kamu pakai; lihat string interpolation untuk kode format seperti :F2.
Membaca input dengan Console.ReadLine
Console.ReadLine() menunggu pengguna mengetik satu baris lalu menekan Enter, kemudian mengembalikan baris itu sebagai string tanpa karakter baris baru. Saat input habis (misalnya saat input dialihkan dari sebuah file yang isinya sudah habis dibaca), method ini mengembalikan null.
Output:
What is your name? How old are you?
Hi Maya, next year you will be 28.
Saat kamu menjalankannya di terminal, teks yang kamu ketik muncul setelah setiap pertanyaan. Output di atas tidak berisi teks yang diketik karena input-nya dialihkan (di-pipe) dan bukan diketik, jadi yang muncul hanya apa yang ditulis oleh program itu sendiri.
ReadLine selalu mengembalikan teks. Untuk memakai nilainya sebagai angka, kamu harus mengonversinya. int.Parse(text) melempar FormatException saat teksnya bukan angka; int.TryParse justru mengembalikan false, itulah sebabnya method ini pilihan yang tepat untuk input pengguna. Detailnya ada di konversi tipe.
Dua method yang berkaitan: Console.Read() mengembalikan karakter berikutnya sebagai kode int, dan Console.ReadKey() membaca satu tombol yang ditekan tanpa menunggu Enter (hanya bekerja di terminal interaktif).
Bentuk lain method Main
Main bisa menerima argumen baris perintah dan bisa mengembalikan kode keluar. Semua ini adalah titik masuk yang valid:
static void Main()
static void Main(string[] args)
static int Main()
static int Main(string[] args)
static async Task Main() // C# 7.1 and later
static async Task<int> Main(string[] args) // C# 7.1 and later
int yang dikembalikan menjadi kode keluar proses, yang dibaca oleh script dan sistem CI untuk menentukan apakah program berhasil (menurut kebiasaan, 0 berarti berhasil).
Output:
Got 0 argument(s)
Jalankan dengan dotnet run -- apples pears, maka args berisi "apples" dan "pears". Tanda -- memisahkan argumen untuk programmu dari argumen untuk tool dotnet.
Komentar
C# punya tiga jenis komentar. Compiler mengabaikan semuanya.
// A single-line comment runs to the end of the line.
/* A block comment
can span several lines. */
/// <summary>
/// An XML documentation comment. Editors show it as the tooltip for the method.
/// </summary>
static decimal ApplyDiscount(decimal price) => price * 0.9m;
Pakai // untuk catatan di dalam kode. Komentar /// ditaruh pada tipe dan member publik; IDE menampilkannya saat kamu mengarahkan kursor ke sebuah pemanggilan, dan compiler bisa mengekspornya ke file XML untuk tool dokumentasi.
Membuat dan menjalankan proyek dengan dotnet
Di komputermu sendiri, instal .NET SDK dari dotnet.microsoft.com, lalu:
dotnet new console -o HelloApp
cd HelloApp
dotnet run
Hello, World!
dotnet new console membuat dua file: HelloApp.csproj (file proyek: target framework, pengaturan, referensi package) dan Program.cs. dotnet run melakukan compile pada proyek lalu menjalankannya. dotnet build melakukan compile tanpa menjalankan dan menulis hasilnya ke bin/Debug/net8.0/ (nama folder-nya mengikuti target framework-mu).
Top-level statements (C# 9 ke atas)
Buka Program.cs yang dibuat tadi dan kamu akan menemukan ini, tanpa apa pun yang lain:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Ini adalah program top-level statements, fitur dari C# 9. Compiler membuatkan class Program dan method Main di sekitar pernyataanmu. using System; juga tidak ada karena proyek .NET 6 ke atas mengaktifkan implicit usings: namespace yang umum seperti System, System.IO, System.Linq dan System.Collections.Generic di-import untuk seluruh proyek.
Program top-level tetap bisa membaca args, memakai await, dan melakukan return kode keluar:
// C# 9 and later: the whole Program.cs
Console.Write("Name: ");
string? name = Console.ReadLine();
Console.WriteLine($"Hello, {name}! You passed {args.Length} arguments.");
return 0;
Hanya satu file per proyek yang boleh berisi top-level statements, dan tipe (class, record) harus ditulis setelahnya. Anotasi string? adalah nullable reference type (C# 8), dan ada di sana karena ReadLine bisa mengembalikan null. Bentuk eksplisit class Program yang dipakai di contoh-contoh pada halaman ini setara, dan bentuk itulah yang akan kamu lihat di kode lama dan di sebagian besar script Unity, jadi ada gunanya bisa membaca keduanya. Kirim --use-program-main ke dotnet new console kalau kamu lebih suka bentuk eksplisit di proyek baru.
Error yang pertama kali akan kamu lihat
- CS1002: ; expected. Sebuah pernyataan tidak diakhiri titik koma. Error-nya dilaporkan di akhir baris yang kehilangan titik koma itu.
- CS0103: The name 'console' does not exist in the current context. Huruf besar dan kecilnya salah, atau
using System;tidak ada di proyek yang tidak memakai implicit usings. - CS5001: Program does not contain a static 'Main' method suitable for an entry point. Penulisan
Mainsalah, tidakstatic, atau signature-nya tidak didukung. - CS0017: Program has more than one entry point defined. Dua class masing-masing punya
Main. Simpan satu saja, atau pilih salah satunya dengan pengaturanStartupObjectdi.csproj. - Jendelanya langsung tertutup. Saat aplikasi console dijalankan dengan klik ganda, jendelanya tertutup ketika
Mainselesai. Jalankan dari terminal, atau tambahkanConsole.ReadKey();di akhir selama pengujian.
Pertanyaan yang sering diajukan
Bagaimana cara menulis Hello World di C#?
Taruh Console.WriteLine("Hello, World!"); di dalam method static void Main() milik sebuah class, dengan using System; di bagian atas. Di proyek yang dibuat dengan dotnet new console pada .NET 6 ke atas, seluruh file bisa berisi satu baris itu saja, karena top-level statements membuatkan class dan Main untukmu.
Apa itu method Main di C#?
Main adalah titik masuk program: method yang dipanggil runtime saat program dimulai. Method ini harus static, bisa mengembalikan void atau int (kode keluar), dan bisa menerima parameter string[] args berisi argumen baris perintah. Sebuah program butuh tepat satu method seperti itu.
Apa perbedaan Console.Write dan Console.WriteLine?
Console.WriteLine menulis teks lalu diikuti baris baru, jadi output berikutnya dimulai di baris baru. Console.Write hanya menulis teksnya, jadi output berikutnya berlanjut di baris yang sama. Console.WriteLine() tanpa argumen mencetak satu baris kosong.
Bagaimana cara membaca input pengguna di C#?
Console.ReadLine() membaca satu baris teks dan mengembalikannya sebagai string (tanpa karakter baris baru), atau null saat input sudah habis. Untuk mendapatkan angka, konversi string-nya: int.TryParse(Console.ReadLine(), out int n) mengembalikan false, bukan crash, saat teksnya bukan angka.
Bagaimana cara menjalankan program C# dari baris perintah?
Instal .NET SDK, lalu jalankan dotnet new console -o HelloApp untuk membuat proyek, cd HelloApp, dan dotnet run untuk build lalu menjalankannya. dotnet build hanya melakukan compile, dan menaruh hasilnya di bin/Debug/net8.0/ (atau versi yang kamu targetkan).