Anda di halaman 1dari 14

MATERI TENTANG C#

OLEH :
- VELINA AYU W
- AULIA PUTRI
- ERLITA ANDRIYANI
Apa itu C# ?
C# atau yang dibaca C sharp adalah bahasa pemrograman sederhana yang digunakan untuk
tujuan umum, dalam artian bahasa pemrograman ini dapat digunakan untuk berbagai fungsi
misalnya untuk pemrograman server-side pada website, membangun aplikasi desktop
ataupun mobile, pemrograman game dan sebagainya. Selain itu C# juga bahasa
pemrograman yang berorientasi objek, jadi C# juga mengusung konsep objek seperti
inheritance, class, polymorphism dan encapsulation.
Dalam prakteknya C# sangat bergantung dengan framework yang disebut .NET Framework,
framework inilah yang nanti digunakan untuk mengcompile dan menjalankan kode C#. C#
dikembangkan oleh Microsoft dengan merekrut Anders Helsberg. Tujuan dibangunnya C#
adalah sebagai bahasa pemrograman utama dalam lingkungan .NET Framework (lihat C#).
Banyak pihak juga yang menganggap bahwa Java dengan C# saling bersaing, bahkan ada
juga yang menyatakan jika pernah belajar Java maka belajar C# akan sangat mudah dan
begitu juga sebaliknya. Anggapan tersebut sebenarnya tidak salah karena perlu diketahui
sebelum adanya C# Microsoft mengembangkan J++ dengan maksud mencoba membuat
Java agar berjalan pada platform Windows, karena adanya masalah dari pihak luar maka
Microsoft menghentikan proyek J++ dan beralih untuk mengembangkan bahasa baru yaitu
C#.
IDE untuk C#
Dalam mengembangkan aplikasi ataupun fungsi-fungsi lain yang berbasis C#, kita perlu IDE
(Integrated Development Environment) untuk membantu pekerjaan kita. Di Windows kita
dapat menggunakan Visual Studio yang memiliki fitur yang sangat lengkap. Akan tetapi tidak
semua dari kita memakai OS (Operating System) Windows dan memiliki kapasitas harddisk
yang memadai karena perlu diketahui Visual Studio ini sangat memakan tempat di harddisk
kita. Karena itu ada IDE alternatif Visual Studio yaitu Xamarin Studio yang bisa dipakai lintas
platform yang fiturnya menurut saya tidak kalah hebatnya dengan Visual Studio dan lebih
dari cukup untuk membangun aplikasi C#. Selain itu ada juga tool seperti SharpDevelop
namun sepertinya hanya bisa untuk platform Windows. Oh iya bagi pembaca yang memakai
OS selain windows dapat memakai Mono untuk pengganti .NET Framework.

spesifikasi laptop yang memiliki processor Atom dan dipersenjatai harddisk sebesar 18 GB,
selain itu juga Sharp Develop juga mudah digunakan oleh pemula seperti saya. Jadi
kesimpulannya untuk platform Windows kamu bisa memilih dari ketiga itu atau mau
semuanya juga terserah, akan tetapi untuk OS Mac OS X dan Linux kamu hanya dapat
memakai Xamarin Studio.

Struktur Program atau Kode pada C#


Dalam pemrograman C# (mungkin juga berlaku untuk beberapa pemrograman lainnya)
memiliki 5 struktur dasar yang harus diingat yaitu,
1.* Resource atau library*
Struktur pertama ini merupakan pendefinisian library apa yang harus ada pada program kita
atau library apa yang kita impor.
2.* Namespace*
Struktur kedua ini adalah nama dari project kita.
3.* Nama Class*
Struktur ketiga ini berbicara tentang apa nama dari Class yang kita buat dan bisa juga
langsung diberi penanda seperti Main Class yang menandakan bahwa Class tersebut Class
utama.
4.* Deklarasi Method *
Struktur keempat ini merupakan pendeklarasian method sebagai awalan untuk menjalankan
method atau perintah yang ada di dalamnya, jika didefinisikan dengan "Main" maka method
tersebut yang dijalankan pertama kali oleh compiler.
5.* Method atau Command*
Struktur kelima adalah method atau perintah yang kita berikan untuk di eksekusi oleh
compiler.
Agar lebih jelas dalam memahami saya berikan contoh kode simplenya yaitu seperti biasa
"Program Hello World", untuk membuatnya silahkan buka IDE masing-masing yaitu VS,
Xamarin, atau SharpDevelop, setelah itu teman-teman klik "File " dibagian menu bar dan
pilih "New ", bisa "New File ", "New Project " atau "New Solution ", Jika New File bisa pilih
"empty class " atau "class ", lalu untuk "New Project " atau "New Solution " untuk
pembelajaran bisa pilih "Create Console Application ".
Tapi itu semua juga tergantung masing-masing software, untuk SharpDevelop memang
semua itu ada, Tapi untuk Xamarin hanya ada "New File " dan "New Solution ", dan juga
pada "New File " hanya ada "empty class ", dan juga jangan lupa pada projectnya diarahkan
pada C# karena bisa jadi IDE tidak otomatis ke C# tapi bisa ke F# dan lain sebagainya, berikut
adalah link contoh gambar secara singkat yang bisa di klik (SharpDevelop dan Xamarin).
Untuk VS jujur saja saya tidak menginstallnya tapi dokumentasinya dapat kamu temukan di
sini. Kemudian buat kode program seperti dibawah ini (jangan di copy-paste), tapi ingat
namespace dan nama class disesuaikan dengan nama yang kamu buat.
C# (diucapkan "See Sharp") adalah bahasa pemrograman yang sederhana, modern,
berorientasi objek, dan aman untuk tipe. C# berakar pada keluarga bahasa C dan akan
segera akrab dengan programmer C, C++, dan Java. C# distandarisasi oleh ECMA
International sebagai standar ECMA-334 dan oleh ISO/IEC sebagai standar ISO/IEC 23270.
Kompiler C# Microsoft untuk .NET Framework adalah implementasi yang sesuai dari kedua
standar ini.
C# adalah bahasa berorientasi objek, tetapi C# lebih lanjut menyertakan dukungan untuk
pemrograman berorientasi komponen. Desain perangkat lunak kontemporer semakin
bergantung pada komponen perangkat lunak dalam bentuk paket fungsionalitas yang
mandiri dan menggambarkan diri sendiri. Kunci komponen tersebut adalah bahwa mereka
menyajikan model pemrograman dengan properti, metode, dan peristiwa; mereka memiliki
atribut yang memberikan informasi deklaratif tentang komponen; dan mereka
memasukkan dokumentasi mereka sendiri. C# menyediakan konstruksi bahasa untuk secara
langsung mendukung konsep-konsep ini, membuat C# menjadi bahasa yang sangat alami
untuk membuat dan menggunakan komponen perangkat lunak.
Beberapa fitur C# membantu dalam pembuatan aplikasi yang kuat dan tahan lama:
Pengumpulan sampah secara otomatis mengambil kembali memori yang ditempati oleh
objek yang tidak digunakan; penanganan pengecualian menyediakan pendekatan
terstruktur dan dapat diperluas untuk deteksi dan pemulihan kesalahan; dan desain bahasa
yang aman untuk tipe membuatnya tidak mungkin untuk membaca dari variabel yang tidak
diinisialisasi, untuk mengindeks array di luar batasnya, atau untuk melakukan gips tipe yang
tidak dicentang.
C# memiliki sistem tipe terpadu. Semua tipe C#, termasuk tipe primitif seperti int dan
double, mewarisi dari satu tipe objek root. Dengan demikian, semua tipe berbagi satu set
operasi umum, dan nilai dari tipe apa pun dapat disimpan, diangkut, dan dioperasikan
secara konsisten. Selanjutnya, C# mendukung tipe referensi dan tipe nilai yang ditentukan
pengguna, memungkinkan alokasi objek yang dinamis serta penyimpanan in-line dari
struktur ringan.
Untuk memastikan bahwa program dan pustaka C# dapat berkembang dari waktu ke waktu
dengan cara yang kompatibel, banyak penekanan telah ditempatkan pada pembuatan versi
dalam desain C#. Banyak bahasa pemrograman tidak terlalu memperhatikan masalah ini,
dan, akibatnya, program yang ditulis dalam bahasa tersebut lebih sering rusak daripada
yang diperlukan ketika versi pustaka dependen yang lebih baru diperkenalkan. Aspek desain
C# yang secara langsung dipengaruhi oleh pertimbangan versi termasuk pengubah virtual
dan override yang terpisah, aturan untuk resolusi kelebihan metode, dan dukungan untuk
deklarasi anggota antarmuka eksplisit.
Sisa bab ini menjelaskan fitur penting dari bahasa C#. Meskipun bab-bab selanjutnya
menjelaskan aturan dan pengecualian dengan cara yang berorientasi pada detail dan
terkadang matematis, bab ini berusaha untuk kejelasan dan singkatnya dengan
mengorbankan kelengkapan. Tujuannya adalah untuk memberi pembaca pengenalan
bahasa yang akan memfasilitasi penulisan program awal dan membaca bab-bab selanjutnya.
1.1 Hello World
Program "Hello, World" secara tradisional digunakan untuk memperkenalkan bahasa
pemrograman.
File sumber C# biasanya memiliki ekstensi file .cs. Dengan asumsi bahwa program "Hello,
World" disimpan dalam file hello.cs, program dapat dikompilasi dengan kompiler Microsoft
C# menggunakan baris perintah
yang menghasilkan Majelis yang dapat dieksekusi bernama hello.exe. Output yang
dihasilkan oleh aplikasi ini saat dijalankan adalah
Halo Dunia
Program "Hello, World" dimulai dengan menggunakan direktif yang mereferensikan ruang
nama Sistem. Ruang nama menyediakan sarana hierarkis untuk mengatur program dan
perpustakaan C#. Ruang nama berisi tipe dan ruang nama lainnya—misalnya, ruang nama
Sistem berisi sejumlah tipe, seperti kelas Konsol yang direferensikan dalam program, dan
sejumlah ruang nama lain, seperti IO dan Koleksi. Arahan penggunaan yang mereferensikan
namespace yang diberikan memungkinkan penggunaan tipe yang tidak memenuhi syarat
yang merupakan anggota namespace itu. Karena menggunakan direktif, program dapat
menggunakan Console.WriteLine sebagai singkatan dari System.Console.WriteLine.
Kelas Hello yang dideklarasikan oleh program “Hello, World” memiliki satu anggota,
metode bernama Main. Metode Utama dideklarasikan dengan pengubah statis. Sementara
metode instance dapat mereferensikan instance objek terlampir tertentu menggunakan
kata kunci this, metode statis beroperasi tanpa referensi ke objek tertentu. Dengan
konvensi, metode statis bernama Main berfungsi sebagai titik masuk program.
Keluaran program dihasilkan oleh metode WriteLine dari kelas Konsol di ruang nama
Sistem. Kelas ini disediakan oleh perpustakaan kelas .NET Framework, yang, secara default,
secara otomatis direferensikan oleh kompiler Microsoft C#. Perhatikan bahwa C# sendiri
tidak memiliki pustaka runtime terpisah. Sebaliknya, .NET Framework adalah perpustakaan
runtime C#.
1.2 Struktur program
Konsep organisasi kunci dalam C# adalah program, ruang nama, tipe, anggota, dan rakitan.
Program C# terdiri dari satu atau lebih file sumber. Program mendeklarasikan tipe, yang
berisi anggota dan dapat diatur ke dalam ruang nama. Kelas dan antarmuka adalah contoh
tipe. Bidang, metode, properti, dan acara adalah contoh anggota. Ketika program C#
dikompilasi, mereka secara fisik dikemas ke dalam rakitan. Majelis biasanya memiliki
ekstensi file .exe atau .dll, tergantung pada apakah mereka mengimplementasikan aplikasi
atau pustaka.
File sumber C# biasanya memiliki ekstensi file .cs. Dengan asumsi bahwa program "Hello,
World" disimpan dalam file hello.cs, program dapat dikompilasi dengan kompiler Microsoft
C# menggunakan baris perintah yang menghasilkan Majelis yang dapat dieksekusi bernama
hello.exe. Output yang dihasilkan oleh aplikasi ini saat dijalankan adalah
Program "Hello, World" dimulai dengan menggunakan direktif yang mereferensikan ruang
nama Sistem. Ruang nama menyediakan sarana hierarkis untuk mengatur program dan
perpustakaan C#. Ruang nama berisi tipe dan ruang nama lainnya—misalnya, ruang nama
Sistem berisi sejumlah tipe, seperti kelas Konsol yang direferensikan dalam program, dan
sejumlah ruang nama lain, seperti IO dan Koleksi. Arahan penggunaan yang mereferensikan
namespace yang diberikan memungkinkan penggunaan tipe yang tidak memenuhi syarat
yang merupakan anggota namespace itu. Karena menggunakan direktif, program dapat
menggunakan Console.WriteLine sebagai singkatan dari System.Console.WriteLine.
Kelas Hello yang dideklarasikan oleh program “Hello, World” memiliki satu anggota,
metode bernama Main. Metode Utama dideklarasikan dengan pengubah statis. Sementara
metode instance dapat mereferensikan instance objek terlampir tertentu menggunakan
kata kunci this, metode statis beroperasi tanpa referensi ke objek tertentu. Dengan
konvensi, metode statis bernama Main berfungsi sebagai titik masuk program.
Keluaran program dihasilkan oleh metode WriteLine dari kelas Konsol di ruang nama
Sistem. Kelas ini disediakan oleh perpustakaan kelas .NET Framework, yang, secara default,
secara otomatis direferensikan oleh kompiler Microsoft C#. Perhatikan bahwa C# sendiri
tidak memiliki pustaka runtime terpisah. Sebaliknya, .NET Framework adalah perpustakaan
runtime C#.
mendeklarasikan kelas bernama Stack dalam namespace bernama Acme.Collections. Nama
yang sepenuhnya memenuhi syarat dari kelas ini adalah Acme.Collections.Stack. Kelas berisi
beberapa anggota: bidang bernama top, dua metode bernama Push dan Pop, dan kelas
bersarang bernama Entry. Kelas Entri lebih lanjut berisi tiga anggota: bidang bernama
berikutnya, bidang bernama data, dan konstruktor. Dengan asumsi bahwa kode sumber
dari contoh disimpan dalam file acme.cs, baris perintah
mengkompilasi contoh sebagai perpustakaan (kode tanpa titik masuk Utama) dan
menghasilkan rakitan bernama acme.dll.
Assemblies berisi kode yang dapat dieksekusi dalam bentuk instruksi Intermediate
Language (IL), dan informasi simbolis dalam bentuk metadata. Sebelum dieksekusi, kode IL
dalam rakitan secara otomatis dikonversi ke kode khusus prosesor oleh kompiler Just-In-
Time (JIT) dari .NET Common Language Runtime.
Karena rakitan adalah unit fungsi yang menggambarkan diri sendiri yang berisi kode dan
metadata, tidak perlu #include direktif dan file header di C#. Tipe dan anggota publik yang
terdapat dalam majelis tertentu tersedia dalam program C# hanya dengan mereferensikan
majelis itu saat mengkompilasi program. Misalnya, program ini menggunakan kelas
Acme.Collections.Stack dari rakitan acme.dll:
C# mengizinkan teks sumber dari suatu program untuk disimpan dalam beberapa file
sumber. Ketika program C# multi-file dikompilasi, semua file sumber diproses bersama-
sama, dan file sumber dapat dengan bebas saling mereferensikan—secara konseptual,
seolah-olah semua file sumber digabungkan menjadi satu file besar sebelum diproses.
Deklarasi penerusan tidak pernah diperlukan dalam C# karena, dengan sedikit pengecualian,
urutan deklarasi tidak signifikan. C# tidak membatasi file sumber untuk mendeklarasikan
hanya satu tipe publik juga tidak memerlukan nama file sumber untuk mencocokkan tipe
yang dideklarasikan dalam file sumber.
Jenis dan variabel
Ada dua jenis tipe dalam C#: tipe nilai dan tipe referensi. Variabel tipe nilai secara langsung
berisi datanya sedangkan variabel tipe referensi menyimpan referensi ke datanya, yang
terakhir dikenal sebagai objek. Dengan tipe referensi, adalah mungkin untuk dua variabel
untuk mereferensikan objek yang sama dan dengan demikian memungkinkan operasi pada
satu variabel untuk mempengaruhi objek yang dirujuk oleh variabel lainnya. Dengan tipe
nilai, variabel masing-masing memiliki salinan datanya sendiri, dan tidak mungkin operasi
pada satu variabel mempengaruhi yang lain (kecuali dalam kasus variabel parameter ref dan
out).
Tipe nilai C# dibagi lagi menjadi tipe sederhana, tipe enum, tipe struct, dan tipe nullable,
dan tipe referensi C# dibagi lagi menjadi tipe kelas, tipe antarmuka, tipe array, dan tipe
delegasi.
Tabel berikut memberikan gambaran umum tentang sistem tipe C#.
- Integral bertanda: sbyte, short, int, long
- Integral tak bertanda: byte, ushort, uint, ulong
- Karakter Unicode: char
-Titik apung IEEE: mengambang, ganda
-Desimal presisi tinggi: desimal
- Boolean: bool
- Jenis formulir yang ditentukan pengguna enum E {...}
- Jenis yang ditentukan pengguna dari formulir struct S {...}
- Ekstensi dari semua jenis nilai lainnya dengan nilai nol
- Kelas dasar utama dari semua jenis lainnya: objek
- String Unicode: string
- Jenis bentuk kelas C yang ditentukan pengguna {...}
- Jenis antarmuka formulir yang ditentukan pengguna I {...}
Delapan tipe integral menyediakan dukungan untuk nilai 8-bit, 16-bit, 32-bit, dan 64-bit
dalam bentuk yang ditandatangani atau tidak ditandatangani.
Dua tipe floating point, float dan double, direpresentasikan menggunakan format IEEE 754
presisi tunggal 32-bit dan presisi ganda 64-bit.
Tipe desimal adalah tipe data 128-bit yang cocok untuk perhitungan keuangan dan
moneter.
Tipe bool C# digunakan untuk mewakili nilai boolean—nilai yang benar atau salah.
Pemrosesan karakter dan string dalam C# menggunakan pengkodean Unicode. Tipe char
mewakili unit kode UTF-16, dan tipe string mewakili urutan unit kode UTF-16.
Program C# menggunakan deklarasi tipe untuk membuat tipe baru. Deklarasi tipe
menentukan nama dan anggota tipe baru. Lima kategori tipe C# dapat ditentukan oleh
pengguna: tipe kelas, tipe struct, tipe antarmuka, tipe enum, dan tipe delegasi.
Tipe kelas mendefinisikan struktur data yang berisi anggota data (bidang) dan anggota
fungsi (metode, properti, dan lainnya). Tipe kelas mendukung pewarisan tunggal dan
polimorfisme, mekanisme di mana kelas turunan dapat memperluas dan mengkhususkan
kelas dasar.
Tipe struct mirip dengan tipe kelas karena mewakili struktur dengan anggota data dan
anggota fungsi. Namun, tidak seperti kelas, struct adalah tipe nilai dan tidak memerlukan
alokasi tumpukan. Tipe struct tidak mendukung pewarisan yang ditentukan pengguna, dan
semua tipe struct secara implisit mewarisi dari objek tipe.
Tipe antarmuka mendefinisikan kontrak sebagai kumpulan anggota fungsi publik yang
diberi nama. Kelas atau struct yang mengimplementasikan antarmuka harus menyediakan
implementasi dari anggota fungsi antarmuka. Antarmuka mungkin mewarisi dari beberapa
antarmuka dasar, dan kelas atau struct dapat mengimplementasikan beberapa antarmuka.
[18.39, 30/8/2022] UltraMine><: Tipe delegasi mewakili referensi ke metode dengan daftar
parameter tertentu dan tipe pengembalian. Delegasi memungkinkan untuk memperlakukan
metode sebagai entitas yang dapat ditetapkan ke variabel dan diteruskan sebagai
parameter. Delegasi mirip dengan konsep penunjuk fungsi yang ditemukan di beberapa
bahasa lain, tetapi tidak seperti penunjuk fungsi, delegasi berorientasi objek dan aman
untuk tipe.
Kelas, struct, antarmuka, dan tipe delegasi semuanya mendukung generik, di mana mereka
dapat diparameterisasi dengan tipe lain.
Tipe enum adalah tipe yang berbeda dengan konstanta bernama. Setiap tipe enum
memiliki tipe yang mendasarinya, yang harus menjadi salah satu dari delapan tipe integral.
Himpunan nilai dari tipe enum sama dengan himpunan nilai dari tipe yang mendasarinya.
C# mendukung array satu dan multi-dimensi dari jenis apa pun. Berbeda dengan tipe yang
tercantum di atas, tipe array tidak harus dideklarasikan sebelum dapat digunakan.
Sebaliknya, tipe array dibangun dengan mengikuti nama tipe dengan tanda kurung siku.
Sebagai contoh, int[] adalah larik satu dimensi dari int, int[,] adalah larik dua dimensi dari
int, dan int[][] adalah larik satu dimensi dari larik berdimensi tunggal dari int.
Tipe nullable juga tidak harus dideklarasikan sebelum dapat digunakan. Untuk setiap tipe
nilai T yang tidak dapat dibatalkan, ada tipe T yang dapat dibatalkan terkait?, yang dapat
menampung nilai tambahan nol. Misalnya, int? adalah tipe yang dapat menampung integer
32 bit atau nilai null.
Sistem tipe C# disatukan sedemikian rupa sehingga nilai tipe apa pun dapat diperlakukan
sebagai objek. Setiap tipe dalam C# secara langsung atau tidak langsung berasal dari tipe
kelas objek, dan objek adalah kelas dasar utama dari semua tipe. Nilai tipe referensi
diperlakukan sebagai objek hanya dengan melihat nilai sebagai objek tipe. Nilai dari tipe
nilai diperlakukan sebagai objek dengan melakukan operasi boxing dan unboxing. Dalam
contoh berikut, nilai int dikonversi ke objek dan kembali lagi ke int.
Ketika nilai dari tipe nilai diubah menjadi objek tipe, instance objek, juga disebut "kotak,"
dialokasikan untuk menyimpan nilai, dan nilai disalin ke dalam kotak itu. Sebaliknya, ketika
referensi objek dilemparkan ke tipe nilai, pemeriksaan dibuat bahwa objek yang
direferensikan adalah kotak dengan tipe nilai yang benar, dan, jika pemeriksaan berhasil,
nilai dalam kotak disalin.
Sistem tipe terpadu C# secara efektif berarti bahwa tipe nilai dapat menjadi objek "sesuai
permintaan." Karena penyatuan, perpustakaan tujuan umum yang menggunakan objek tipe
dapat digunakan dengan tipe referensi dan tipe nilai.
Ada beberapa jenis variabel dalam C#, termasuk bidang, elemen array, variabel lokal, dan
parameter. Variabel mewakili lokasi penyimpanan, dan setiap variabel memiliki tipe yang
menentukan nilai apa yang dapat disimpan dalam variable
1.4 Ekspresi
Ekspresi dibangun dari operan dan operator. Operator ekspresi menunjukkan operasi mana
yang diterapkan ke operan. Contoh operator antara lain +, -, *, /, dan new. Contoh operan
termasuk literal, bidang, variabel lokal, dan ekspresi.
Ketika ekspresi berisi beberapa operator, prioritas operator mengontrol urutan di mana
masing-masing operator dievaluasi. Misalnya, ekspresi x + y * z dievaluasi sebagai x + (y * z)
karena operator * memiliki prioritas lebih tinggi daripada operator +.
Sebagian besar operator dapat kelebihan beban. Overloading operator mengizinkan
implementasi operator yang ditentukan pengguna untuk ditentukan untuk operasi di mana
satu atau kedua operan adalah kelas atau tipe struct yang ditentukan pengguna.

1.5 Pernyataan
Tindakan suatu program diekspresikan dengan menggunakan pernyataan. C# mendukung
beberapa jenis pernyataan yang berbeda, beberapa di antaranya didefinisikan dalam istilah
pernyataan yang disematkan.
Sebuah blok memungkinkan beberapa pernyataan untuk ditulis dalam konteks di mana satu
pernyataan diperbolehkan. Sebuah blok terdiri dari daftar pernyataan yang ditulis di antara
pembatas { dan }.
Pernyataan deklarasi digunakan untuk mendeklarasikan variabel lokal dan konstanta.
Pernyataan ekspresi digunakan untuk mengevaluasi ekspresi. Ekspresi yang dapat
digunakan sebagai pernyataan meliputi pemanggilan metode, alokasi objek menggunakan
operator baru, penugasan menggunakan = dan operator penugasan gabungan, operasi
penambahan dan pengurangan menggunakan operator ++ dan -- dan ekspresi menunggu.
Pernyataan pilihan digunakan untuk memilih salah satu dari sejumlah pernyataan yang
mungkin untuk dieksekusi berdasarkan nilai dari beberapa ekspresi. Dalam grup ini adalah
pernyataan if dan switch.
Pernyataan iterasi digunakan untuk mengeksekusi pernyataan yang disematkan berulang
kali. Dalam kelompok ini terdapat pernyataan while, do, for, dan foreach.
Pernyataan lompat digunakan untuk mentransfer kontrol. Dalam grup ini terdapat
pernyataan break, continue, goto, throw, return, dan yield.
Pernyataan try...catch digunakan untuk menangkap eksepsi yang terjadi selama eksekusi
sebuah blok, dan pernyataan try...finally digunakan untuk menentukan kode finalisasi yang
selalu dijalankan, apakah terjadi eksepsi atau tidak.
Pernyataan yang dicentang dan tidak dicentang digunakan untuk mengontrol konteks
pemeriksaan luapan untuk operasi dan konversi aritmatika tipe integral.
Pernyataan kunci digunakan untuk mendapatkan kunci pengecualian bersama untuk objek
tertentu, menjalankan pernyataan, dan kemudian melepaskan kunci.
Pernyataan using digunakan untuk mendapatkan sumber daya, menjalankan pernyataan,
dan kemudian membuang sumber daya itu.
1.6Kelas dan objek
Kelas adalah tipe C# yang paling mendasar. Kelas adalah struktur data yang
menggabungkan keadaan (bidang) dan tindakan (metode dan anggota fungsi lainnya) dalam
satu unit. Kelas memberikan definisi untuk instance kelas yang dibuat secara dinamis, juga
dikenal sebagai objek. Kelas mendukung pewarisan dan polimorfisme, mekanisme di mana
kelas turunan dapat memperluas dan mengkhususkan kelas dasar.
Kelas baru dibuat menggunakan deklarasi kelas. Deklarasi kelas dimulai dengan header
yang menentukan atribut dan pengubah kelas, nama kelas, kelas dasar (jika diberikan), dan
antarmuka yang diimplementasikan oleh kelas. Header diikuti oleh badan kelas, yang terdiri
dari daftar deklarasi anggota yang ditulis di antara pembatas { dan }.
Instance kelas dibuat menggunakan operator baru, yang mengalokasikan memori untuk
instance baru, memanggil konstruktor untuk menginisialisasi instance, dan mengembalikan
referensi ke instance. Pernyataan berikut membuat dua objek Point dan menyimpan
referensi ke objek tersebut dalam dua variabel:
Titik p1 = Titik baru(0, 0);
Titik p2 = Titik baru(10, 20);
Memori yang ditempati oleh suatu objek secara otomatis diambil kembali ketika objek
tersebut tidak lagi digunakan. Tidak perlu atau tidak mungkin untuk secara eksplisit
membatalkan alokasi objek di C#.
Anggota
Anggota kelas adalah anggota statis atau anggota instance. Anggota statis milik kelas, dan
anggota instance milik objek (contoh kelas).
Tabel berikut memberikan gambaran umum tentang jenis anggota kelas dapat berisi.
Aksesibilitas
Setiap anggota kelas memiliki aksesibilitas terkait, yang mengontrol wilayah teks program
yang dapat mengakses anggota. Ada lima kemungkinan bentuk aksesibilitas
Ketik parameter
Definisi kelas dapat menentukan satu set parameter tipe dengan mengikuti nama kelas
dengan kurung sudut yang melampirkan daftar nama parameter tipe. Parameter tipe dapat
digunakan dalam isi deklarasi kelas untuk mendefinisikan anggota kelas. Pada contoh
berikut, parameter tipe Pair adalah TFirst dan TSecond:
Tipe kelas yang dideklarasikan untuk mengambil parameter tipe disebut tipe kelas generik.
Jenis struktur, antarmuka, dan delegasi juga dapat bersifat umum.
Ketika kelas generik digunakan, argumen tipe harus disediakan untuk setiap parameter tipe:
Pair<int,string> pair = new Pair<int,string> { Pertama = 1, Kedua = “dua” };
int i = pasangan.Pertama; // TPertama sudah masuk
string s = pasangan.Kedua; // TSKedua adalah string
Tipe generik dengan argumen tipe yang disediakan, seperti Pair<int,string> di atas, disebut
tipe yang dibangun.
Kelas dasar
Deklarasi kelas dapat menentukan kelas dasar dengan mengikuti nama kelas dan parameter
tipe dengan titik dua dan nama kelas dasar. Menghilangkan spesifikasi kelas dasar sama
dengan menurunkan dari objek tipe. Dalam contoh berikut, kelas dasar Point3D adalah
Point, dan kelas dasar Point adalah objek:
Penetapan ke bidang hanya-baca hanya dapat terjadi sebagai bagian dari deklarasi bidang
atau dalam konstruktor di kelas yang sama.
Metode
Metode adalah anggota yang mengimplementasikan komputasi atau tindakan yang dapat
dilakukan oleh objek atau kelas. Metode statis diakses melalui kelas. Metode instance
diakses melalui instance kelas.
Metode memiliki daftar parameter (mungkin kosong), yang mewakili nilai atau referensi
variabel yang diteruskan ke metode, dan tipe pengembalian, yang menentukan jenis nilai
yang dihitung dan dikembalikan oleh metode. Jenis pengembalian metode adalah batal jika
tidak mengembalikan nilai.
Seperti halnya tipe, metode mungkin juga memiliki seperangkat parameter tipe, yang
argumen tipenya harus ditentukan saat metode dipanggil. Tidak seperti tipe, argumen tipe
sering dapat disimpulkan dari argumen pemanggilan metode dan tidak perlu diberikan
secara eksplisit.
Tanda tangan suatu metode harus unik di kelas di mana metode tersebut dideklarasikan.
Tanda tangan suatu metode terdiri dari nama metode, jumlah parameter tipe dan jumlah,
pengubah, dan tipe parameternya. Tanda tangan suatu metode tidak menyertakan tipe
pengembalian.
Parameter
Parameter digunakan untuk meneruskan nilai atau referensi variabel ke metode.
Parameter metode mendapatkan nilai aktualnya dari argumen yang ditentukan saat metode
dipanggil. Ada empat jenis parameter: parameter nilai, parameter referensi, parameter
keluaran, dan larik parameter.
Parameter nilai digunakan untuk melewatkan parameter input. Parameter nilai sesuai
dengan variabel lokal yang mendapatkan nilai awalnya dari argumen yang diteruskan untuk
parameter tersebut. Modifikasi parameter nilai tidak memengaruhi argumen yang
diteruskan untuk parameter tersebut.
Parameter nilai dapat bersifat opsional, dengan menetapkan nilai default sehingga argumen
terkait dapat dihilangkan.
Parameter referensi digunakan untuk melewatkan parameter input dan output. Argumen
yang diteruskan untuk parameter referensi harus berupa variabel, dan selama eksekusi
metode, parameter referensi mewakili lokasi penyimpanan yang sama dengan variabel
argumen. Parameter referensi dideklarasikan dengan modifier ref
Parameter keluaran digunakan untuk melewatkan parameter keluaran. Parameter
keluaran mirip dengan parameter referensi kecuali bahwa nilai awal dari argumen yang
disediakan pemanggil tidak penting. Sebuah
parameter output dideklarasikan dengan modifier out. Contoh berikut menunjukkan
penggunaan parameter out.
Array parameter memungkinkan sejumlah variabel argumen untuk diteruskan ke suatu
metode. Array parameter dideklarasikan dengan pengubah params. Hanya parameter
terakhir dari suatu metode yang dapat berupa larik parameter, dan tipe larik parameter
harus berupa tipe larik dimensi tunggal. Metode Write dan WriteLine dari kelas
System.Console adalah contoh yang baik dari penggunaan array parameter
Dalam metode yang menggunakan larik parameter, larik parameter berperilaku persis
seperti parameter biasa dari tipe larik. Namun, dalam pemanggilan metode dengan larik
parameter, dimungkinkan untuk melewatkan argumen tunggal dari tipe larik parameter
atau sejumlah argumen dari tipe elemen larik parameter. Dalam kasus terakhir, instance
array secara otomatis dibuat dan diinisialisasi dengan argumen yang diberikan.
Tubuh metode dan variabel lokal
Tubuh metode menentukan pernyataan yang akan dieksekusi ketika metode dipanggil.
Badan metode dapat mendeklarasikan variabel yang spesifik untuk pemanggilan metode.
Variabel seperti itu disebut variabel lokal. Deklarasi variabel lokal menentukan nama tipe,
nama variabel, dan mungkin nilai awal. Contoh berikut mendeklarasikan variabel lokal i
dengan nilai awal nol dan variabel lokal j tanpa nilai awal.
C# membutuhkan variabel lokal untuk ditetapkan secara pasti sebelum nilainya dapat
diperoleh. Misalnya, jika deklarasi i sebelumnya tidak menyertakan nilai awal, kompilator
akan melaporkan kesalahan untuk penggunaan i berikutnya karena i tidak akan ditetapkan
secara pasti pada titik-titik tersebut dalam program.
Sebuah metode dapat menggunakan pernyataan kembali untuk mengembalikan kontrol ke
pemanggilnya. Dalam metode yang mengembalikan kekosongan, pernyataan pengembalian
tidak dapat menentukan ekspresi. Dalam metode yang mengembalikan non-void,
pernyataan pengembalian harus menyertakan ekspresi yang menghitung nilai
pengembalian.
Metode statis dan instan
Metode yang dideklarasikan dengan pengubah statis adalah metode statis. Metode statis
tidak beroperasi pada instance tertentu dan hanya dapat mengakses anggota statis secara
langsung.
Metode yang dideklarasikan tanpa pengubah statis adalah metode instan. Metode instance
beroperasi pada instance tertentu dan dapat mengakses anggota statis dan instance.
Instance di mana metode instance dipanggil dapat diakses secara eksplisit seperti ini. Ini
adalah kesalahan untuk merujuk ini dalam metode statis.
Setiap instance Entitas berisi nomor seri (dan mungkin beberapa informasi lain yang tidak
ditampilkan di sini). Konstruktor Entitas (yang seperti metode instance) menginisialisasi
instance baru dengan nomor seri berikutnya yang tersedia. Karena konstruktor adalah
anggota instans, maka diizinkan untuk mengakses kolom instans serialNo dan kolom statis
nextSerialNo.
Metode statis GetNextSerialNo dan SetNextSerialNo dapat mengakses bidang statis
nextSerialNo, tetapi akan menjadi kesalahan bagi mereka untuk langsung mengakses bidang
instance serialNo.
Metode virtual, override, dan abstrak
Ketika deklarasi metode instance menyertakan pengubah virtual, metode tersebut
dikatakan sebagai metode virtual. Ketika tidak ada pengubah virtual, metode ini dikatakan
sebagai metode non-virtual.
Ketika metode virtual dipanggil, tipe run-time dari instance tempat pemanggilan itu terjadi
menentukan implementasi metode aktual yang akan dipanggil. Dalam pemanggilan metode
nonvirtual, tipe waktu kompilasi dari instance adalah faktor penentu.
Metode virtual dapat ditimpa di kelas turunan. Ketika deklarasi metode instance
menyertakan pengubah override, metode tersebut menimpa metode virtual yang diwarisi
dengan tanda tangan yang sama. Sementara deklarasi metode virtual memperkenalkan
metode baru, deklarasi metode override mengkhususkan metode virtual warisan yang ada
dengan menyediakan implementasi baru dari metode tersebut.
Metode abstrak adalah metode virtual tanpa implementasi. Metode abstrak dideklarasikan
dengan pengubah abstrak dan hanya diizinkan di kelas yang juga dideklarasikan abstrak.
Metode abstrak harus diganti di setiap kelas turunan non-abstrak.
Contoh berikut mendeklarasikan kelas abstrak, Ekspresi, yang mewakili simpul pohon
ekspresi, dan tiga kelas turunan, Konstanta, Referensi Variabel, dan Operasi, yang
mengimplementasikan simpul pohon ekspresi untuk konstanta, referensi variabel, dan
operasi aritmatika. (Ini mirip dengan, tetapi jangan bingung dengan tipe pohon ekspresi
yang diperkenalkan di bagian 4.6).
metode tertentu selalu dapat dipilih dengan secara eksplisit melemparkan argumen ke tipe
parameter yang tepat dan/atau secara eksplisit menyediakan argumen tipe.

Anda mungkin juga menyukai