Bagikan melalui


Tur bahasa C#

Bahasa C# adalah bahasa yang paling populer untuk platform .NET, lingkungan pengembangan gratis, lintas platform, sumber terbuka. Program C# dapat berjalan di banyak perangkat yang berbeda, dari perangkat Internet of Things (IoT) ke cloud dan di mana-mana di antaranya. Anda dapat menulis aplikasi untuk komputer dan server telepon, desktop, dan laptop.

C# adalah bahasa tujuan umum lintas platform yang membuat pengembang produktif sambil menulis kode dengan performa tinggi. Dengan jutaan pengembang, C# adalah bahasa .NET paling populer. C# memiliki dukungan luas dalam ekosistem dan semua beban kerja .NET. Berdasarkan prinsip-prinsip berorientasi objek, ini menggabungkan banyak fitur dari paradigma lain, pemrograman fungsional tidak sedikit. Fitur tingkat rendah mendukung skenario efisiensi tinggi tanpa menulis kode yang tidak aman. Sebagian besar runtime dan pustaka .NET ditulis dalam C#, dan kemajuan di C# sering menguntungkan semua pengembang .NET.

Halo Dunia

Program "Halo, Dunia" secara tradisional digunakan untuk memperkenalkan bahasa pemrograman. Di sini ada di C#:

// This line prints "Hello, World" 
Console.WriteLine("Hello, World");

Baris yang dimulai dengan // adalah komentar baris tunggal. Komentar baris tunggal C# dimulai dengan // dan lanjutkan ke akhir baris saat ini. C# juga mendukung komentar multibaris. Komentar multibaris dimulai dengan /* dan diakhir dengan */. Metode WriteLineConsole kelas, yang berada di System namespace, menghasilkan output program. Kelas ini disediakan oleh pustaka kelas standar, yang, secara default, secara otomatis direferensikan dalam setiap program C#.

Contoh sebelumnya menunjukkan salah satu bentuk program "Halo, Dunia", menggunakan pernyataan tingkat atas. Versi C# sebelumnya mengharuskan Anda menentukan titik masuk program dalam metode . Format ini masih valid, dan Anda akan melihatnya dalam banyak sampel C# yang ada. Anda juga harus terbiasa dengan formulir ini, seperti yang ditunjukkan dalam contoh berikut:

using System;

class Hello
{
    static void Main()
    {
        // This line prints "Hello, World" 
        Console.WriteLine("Hello, World");
    }
}

Versi ini memperlihatkan blok penyusun yang Anda gunakan dalam program Anda. Program "Halo, Dunia" dimulai dengan arahan using yang mereferensikan namespace System. Namespace menyediakan cara hierarkis untuk mengatur program dan pustaka C#. Namespace berisi jenis dan namespace lainnya—misalnya, System namespace berisi banyak jenis, seperti kelas yang Console dirujuk dalam program, dan banyak namespace lainnya, seperti IO dan Collections. Arahan using yang mereferensikan namespace layanan tertentu memungkinkan penggunaan yang tidak memenuhi syarat dari jenis yang merupakan anggota namespace tersebut. Karena direktif using, program dapat menggunakan Console.WriteLine sebagai singkatan untuk System.Console.WriteLine. Dalam contoh sebelumnya, namespace layanan tersebut secara implisit disertakan.

Kelas Hello yang dideklarasikan oleh program "Halo, Dunia" memiliki satu anggota, metode bernama Main. Metode Main ini dideklarasikan dengan pengubah static. Meskipun metode instans dapat mereferensikan instans objek penutup tertentu menggunakan kata kunci this, metode statis beroperasi tanpa mereferensikan ke objek tertentu. Menurut konvensi, ketika tidak ada pernyataan tingkat atas metode statis bernama Main berfungsi sebagai titik masuk program C#.

Kedua bentuk titik masuk menghasilkan kode yang setara. Saat Anda menggunakan pernyataan tingkat atas, pengkompilasi mensintesis kelas dan metode yang berisi untuk titik masuk program.

Tip

Contoh dalam artikel ini memberi Anda melihat kode C# terlebih dahulu. Beberapa sampel mungkin menunjukkan elemen C# yang tidak Anda kenal. Ketika Anda siap untuk mempelajari C#, mulailah dengan tutorial pemula kami, atau selidiki tautan di setiap bagian. Jika Anda berpengalaman di Java, JavaScript, TypeScript , atau Python, baca tips kami untuk membantu Anda menemukan informasi yang Anda butuhkan untuk mempelajari C#dengan cepat.

Fitur C# yang familier

C# dapat didekati untuk pemula namun menawarkan fitur canggih untuk pengembang berpengalaman yang menulis aplikasi khusus. Anda bisa produktif dengan cepat. Anda dapat mempelajari lebih lanjut teknik khusus saat Anda membutuhkannya untuk aplikasi Anda.

Aplikasi C# mendapat manfaat dari manajemen memori otomatis .NET Runtime. Aplikasi C# juga menggunakan pustaka runtime ekstensif yang disediakan oleh .NET SDK. Beberapa komponen independen platform, seperti pustaka sistem file, pengumpulan data, dan pustaka matematika. Lainnya khusus untuk satu beban kerja, seperti pustaka web ASP.NET Core, atau pustaka UI .NET MAUI. Ekosistem Open Source yang kaya di NuGet menambah pustaka yang merupakan bagian dari runtime. Pustaka ini menyediakan lebih banyak komponen yang dapat Anda gunakan.

C# berada dalam keluarga bahasa C. Sintaks C# akrab jika Anda telah menggunakan C, C++, JavaScript, atau Java. Seperti semua bahasa dalam keluarga C, titik koma (;) menentukan akhir pernyataan. Pengidentifikasi C# peka huruf besar/kecil. C# memiliki penggunaan kurung kurawal yang sama, { dan }, pernyataan kontrol seperti if, else dan switch, dan konstruksi perulangan seperti for, dan while. C# juga memiliki foreach pernyataan untuk jenis koleksi apa pun.

C# adalah bahasa yang sangat ditik . Setiap variabel yang Anda deklarasikan memiliki jenis yang diketahui pada waktu kompilasi. Pengkompilasi, atau alat pengeditan memberi tahu Anda jika Anda salah menggunakan jenis tersebut. Anda dapat memperbaiki kesalahan tersebut sebelum menjalankan program Anda. Jenis data dasar dibangun ke dalam bahasa dan runtime: jenis nilai seperti int, double, char, jenis referensi seperti string, array, dan koleksi lainnya. Saat Anda menulis program, Anda membuat jenis Anda sendiri. Jenis tersebut dapat berupa struct jenis untuk nilai, atau class jenis yang menentukan perilaku berorientasi objek. Anda dapat menambahkan pengubah record ke salah satu struct atau class jenis sehingga pengkompilasi mensintesis kode untuk perbandingan kesetaraan. Anda juga dapat membuat interface definisi, yang menentukan kontrak, atau sekumpulan anggota, yang harus disediakan oleh jenis yang menerapkan antarmuka tersebut. Anda juga dapat menentukan jenis dan metode generik. Generik menggunakan parameter jenis untuk menyediakan tempat penampung untuk jenis aktual saat digunakan.

Saat Menulis kode, Anda menentukan fungsi, juga disebut metode, sebagai anggota struct dan class jenis. Metode ini menentukan perilaku jenis Anda. Metode dapat kelebihan beban, dengan jumlah atau jenis parameter yang berbeda. Metode dapat secara opsional mengembalikan nilai. Selain metode, jenis C# dapat memiliki properti, yang merupakan elemen data yang didukung oleh fungsi yang disebut aksesor. Jenis C# dapat menentukan peristiwa, yang memungkinkan jenis untuk memberi tahu pelanggan tentang tindakan penting. C# mendukung teknik berorientasi objek seperti warisan dan polimorfisme untuk class jenis.

Aplikasi C# menggunakan pengecualian untuk melaporkan dan menangani kesalahan. Anda akan terbiasa dengan praktik ini jika Anda telah menggunakan C++ atau Java. Kode Anda melemparkan pengecualian ketika tidak dapat melakukan apa yang dimaksudkan. Kode lain, tidak peduli berapa banyak tingkat tumpukan panggilan, dapat secara opsional pulih dengan menggunakan try - catch blok.

Fitur C# yang khas

Beberapa elemen C# mungkin kurang akrab. Kueri terintegrasi bahasa (LINQ) menyediakan sintaks berbasis pola umum untuk mengkueri atau mengubah kumpulan data apa pun. LINQ menyaingkan sintaks untuk mengkueri koleksi dalam memori, data terstruktur seperti XML atau JSON, penyimpanan database, dan bahkan API data berbasis cloud. Anda mempelajari satu set sintaks dan Anda dapat mencari dan memanipulasi data terlepas dari penyimpanannya. Kueri berikut menemukan semua siswa yang rata-rata poin nilainya lebih besar dari 3,5:

var honorRoll = from student in Students
                where student.GPA > 3.5
                select student;

Kueri sebelumnya berfungsi untuk banyak jenis penyimpanan yang diwakili oleh Students. Ini bisa berupa kumpulan objek, tabel database, blob penyimpanan cloud, atau struktur XML. Sintaks kueri yang sama berfungsi untuk semua jenis penyimpanan.

Model pemrograman asinkron berbasis Tugas memungkinkan Anda menulis kode yang berbunyi seolah-olah berjalan secara sinkron, meskipun berjalan secara asinkron. Ini menggunakan async kata kunci dan await untuk menggambarkan metode yang asinkron, dan ketika ekspresi mengevaluasi secara asinkron. Sampel berikut menunggu permintaan web asinkron. Ketika operasi asinkron selesai, metode mengembalikan panjang respons:

public static async Task<int> GetPageLengthAsync(string endpoint)
{
    var client = new HttpClient();
    var uri = new Uri(endpoint);
    byte[] content = await client.GetByteArrayAsync(uri);
    return content.Length;
}

C# juga mendukung await foreach pernyataan untuk melakukan iterasi koleksi yang didukung oleh operasi asinkron, seperti GraphQL paging API. Sampel berikut membaca data dalam gugus, mengembalikan iterator yang menyediakan akses ke setiap elemen saat tersedia:

public static async IAsyncEnumerable<int> ReadSequence()
{
    int index = 0;
    while (index < 100)
    {
        int[] nextChunk = await GetNextChunk(index);
        if (nextChunk.Length == 0)
        {
            yield break;
        }
        foreach (var item in nextChunk)
        {
            yield return item;
        }
        index++;
    }
}

Penelepon dapat mengulangi koleksi menggunakan await foreach pernyataan:

await foreach (var number in ReadSequence())
{
    Console.WriteLine(number);
}

C# menyediakan pencocokan pola. Ekspresi tersebut memungkinkan Anda memeriksa data dan membuat keputusan berdasarkan karakteristiknya. Pencocokan pola menyediakan sintaks yang bagus untuk alur kontrol berdasarkan data. Kode berikut menunjukkan bagaimana metode untuk operasi boolean dan, atau, dan xor dapat diekspresikan menggunakan sintaks pencocokan pola:

public static bool Or(bool left, bool right) =>
    (left, right) switch
    {
        (true, true) => true,
        (true, false) => true,
        (false, true) => true,
        (false, false) => false,
    };

public static bool And(bool left, bool right) =>
    (left, right) switch
    {
        (true, true) => true,
        (true, false) => false,
        (false, true) => false,
        (false, false) => false,
    };
public static bool Xor(bool left, bool right) =>
    (left, right) switch
    {
        (true, true) => false,
        (true, false) => true,
        (false, true) => true,
        (false, false) => false,
    };

Ekspresi pencocokan pola dapat disederhanakan menggunakan _ sebagai tangkapan semua untuk nilai apa pun. Contoh berikut menunjukkan bagaimana Anda dapat menyederhanakan metode dan :

public static bool ReducedAnd(bool left, bool right) =>
    (left, right) switch
    {
        (true, true) => true,
        (_, _) => false,
    };

Terakhir, sebagai bagian dari ekosistem .NET, Anda dapat menggunakan Visual Studio, atau Visual Studio Code dengan C# DevKit. Alat-alat ini memberikan pemahaman yang kaya tentang C#, termasuk kode yang Anda tulis. Mereka juga menyediakan kemampuan penelusuran kesalahan.