Bagikan melalui


Struktur umum program C#

Petunjuk / Saran

Baru mengembangkan perangkat lunak? Mulai dengan tutorial Memulai terlebih dahulu. Mereka memandu Anda untuk menulis program pertama kali dengan C# sebelum mempelajari struktur program.

Berpengalaman dalam bahasa lain? Anda mungkin ingin melewati bagian Memulai untuk sintaksis C#-spesifik, lalu kembali ke sini.

Anda membangun program C# dari blok penyusun inti ini: namespace mengatur jenis-jenis, jenis-jenis (kelas, struktur, antarmuka, enum, dan delegasi) menentukan perilaku dan data, serta pernyataan dan ekspresi melakukan tugas pada waktu run-time. Cara Anda menyusun titik masuk tergantung pada gaya aplikasi mana yang Anda pilih.

Memilih gaya aplikasi Anda

Saat Anda membuat program C#, buat dua pilihan independen tentang cara menyusunnya:

  • Berbasis file atau berbasis proyek?
    • Aplikasi berbasis file berjalan dari satu .cs file tanpa file proyek.
    • Aplikasi berbasis proyek menggunakan .csproj file dan dapat mencakup beberapa file sumber.
  • Pernyataan atau Main metode tingkat atas?
    • Pernyataan tingkat atas memungkinkan Anda menulis kode yang dapat dieksekusi langsung di bagian atas file.
    • Metode Main membungkus titik masuk dalam metode statis eksplisit.

Baik aplikasi berbasis proyek maupun aplikasi berbasis file mendukung gaya titik masuk.

Aplikasi berbasis file vs. aplikasi berbasis proyek

Dimulai dengan C# 14 dan .NET 10, aplikasi berbasis file memungkinkan Anda menjalankan program yang terkandung dalam satu *.cs file tanpa file proyek. Simpan kode berikut dalam file bernama hello-world.cs dan jalankan dengan dotnet run hello-world.cs atau dotnet hello-world.cs:

#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");

Nota

Baris perintah #! memungkinkan sistem operasi Unix untuk menjalankan file secara langsung (misalnya, ./hello-world.cs). Ini mengharuskan izin eksekusi untuk ditetapkan (chmod +x <file>).

Aplikasi berbasis file mendukung semua sintaks C# dan dapat menggunakan arahan preprocessor untuk mengonfigurasi sistem build. Gunakan aplikasi berbasis file untuk utilitas baris perintah kecil, prototipe, dan eksperimen. Aplikasi berbasis file terdiri dari satu file dalam direktori:

my-app/
└── hello-world.cs

Aplikasi berbasis proyek menggunakan .csproj file dan perintahdotnet new .NET CLI, dotnet build, dan dotnet run alur kerja. Pilih aplikasi berbasis proyek saat program Anda mencakup beberapa file atau memerlukan konfigurasi build yang halus. Aplikasi berbasis proyek menyertakan file proyek bersama satu atau beberapa file sumber:

my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│   └── Person.cs
└── Services/
    └── GreetingService.cs

Jika aplikasi berbasis file tumbuh, Anda dapat dengan mudah mengonversinya ke aplikasi berbasis proyek. Jalankan dotnet project convert untuk menghasilkan file proyek dari file sumber yang ada.

Jika Anda tahu bahwa aplikasi Anda memerlukan beberapa file sumber sejak awal, mulailah dengan aplikasi berbasis proyek. Anda menghindari langkah konversi dan dapat segera mengatur kode Anda ke dalam file terpisah.

Pernyataan tingkat atas vs. Main metode

Dengan menggunakan pernyataan tingkat atas, Anda dapat menulis kode yang dapat dieksekusi langsung dalam satu file tanpa membungkusnya dalam kelas dan Main metode. Gaya ini adalah default saat Anda membuat aplikasi konsol baru dengan dotnet new console. Contoh berikut menunjukkan program C# modern yang menggunakan pernyataan tingkat atas:

Console.WriteLine("Hello, World!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }
}

Hanya satu file dalam proyek yang dapat memiliki pernyataan tingkat atas, dan titik entri adalah baris pertama teks program dalam file tersebut. Saat Anda membangun program yang lebih besar, Anda menyertakan lebih banyak elemen program.

Anda juga dapat menentukan metode statis Main eksplisit sebagai titik masuk program:

// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Kedua gaya masuk berfungsi dengan aplikasi berbasis file dan berbasis proyek. Kedua gaya mendukung fitur yang sama.

Membangun dan menjalankan program C#

C# adalah bahasa yang dikompilasi. Untuk aplikasi berbasis proyek, gunakan dotnet build perintah untuk mengkompilasi file sumber ke dalam paket biner. Gunakan dotnet run untuk membangun dan menjalankan dalam satu langkah. dotnet CLI, yang disertakan dalam .NET SDK, menyediakan banyak alat untuk membuat, membangun, dan mengelola proyek C#.

Untuk aplikasi berbasis file, dotnet run hello-world.cs kompilasi dan jalankan file tunggal secara langsung - tidak diperlukan file proyek.

Ekspresi dan pernyataan

Jika Anda mengikuti tutorial Memulai , Anda sudah menulis ekspresi dan pernyataan. Setiap baris kode yang Anda ketik adalah satu atau yang lain (atau keduanya). Sekarang mari kita tentukan istilah-istilah tersebut.

Ekspresi dan pernyataan adalah blok penyusun mendasar dari program C#. Ekspresi menghasilkan nilai. Pernyataan melakukan tindakan dan biasanya berakhir di titik koma.

Berikut ini adalah ekspresi:

  • 42 (nilai harfiah)
  • x + y (operasi aritmatika)
  • Math.Max(a, b) (panggilan metode yang menghasilkan nilai)
  • condition ? trueValue : falseValue (ekspresi kondisional)
  • new Person("John") (pembuatan objek)

Pernyataan melakukan tindakan. Pernyataan mengontrol alur program, mendeklarasikan variabel, atau memanggil operasi. Berikut ini adalah pernyataan:

  • int x; (pernyataan deklarasi)
  • int x = 42; (pernyataan deklarasi yang diinisialisasi)
  • Console.WriteLine("Hello"); (pernyataan panggilan metode)
  • if (condition) { /* code */ } (pernyataan kondisi)
  • return result; (pernyataan pengembalian)

Pernyataan sering berisi ekspresi, dan ekspresi dapat bersarang di dalam ekspresi lain. Misalnya, pernyataan deklarasi berikut menetapkan f ke hasil ekspresi penambahan. Ekspresi penambahan tersebut menambahkan hasil dari dua ekspresi panggilan metode:

var maxResult = Math.Max(a, b) + Math.Max(c, d);

Untuk informasi terperinci tentang pernyataan, lihat Pernyataan. Untuk informasi tentang anggota bertubuh ekspresi, lihat Anggota bertubuh ekspresi.