Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Generics C# Dijelaskan: Kode Fleksibel dan Aman Tipe untuk Setiap Tipe Data

Generics memungkinkan Anda menentukan spesifikasi tipe data elemen pemrograman dalam kelas atau metode, sampai digunakan sebenarnya dalam program. Dengan kata lain, generics memungkinkan Anda menulis kelas atau metode yang dapat bekerja dengan setiap tipe data.

Anda menulis spesifikasi untuk kelas atau metode, dengan parameter pengganti untuk tipe data. Ketika compiler menemukan konstruktor untuk kelas atau panggilan fungsi untuk metode, ia menghasilkan kode untuk menangani tipe data spesifik. Contoh sederhana akan membantu memahami konsep ini −

Live Demo
using System; using System.Collections.Generic; namespace GenericApplication { public class MyGenericArray<T> { private T[] array; public MyGenericArray(int size) { array = new T[size + 1]; } public T getItem(int index) { return array[index]; } public void setItem(int index, T value) { array[index] = value; } } class Tester { static void Main(string[] args) { //declaring an int array MyGenericArray<int> intArray = new MyGenericArray<int>(5); //setting values for (int c = 0; c < 5; c++) { intArray.setItem(c, c*5); } //retrieving the values for (int c = 0; c < 5; c++) { Console.Write(intArray.getItem(c) + " "); } Console.WriteLine(); //declaring a character array MyGenericArray<char> charArray = new MyGenericArray<char>(5); //setting values for (int c = 0; c < 5; c++) { charArray.setItem(c, (char)(c+97)); } //retrieving the values for (int c = 0; c< 5; c++) { Console.Write(charArray.getItem(c) + " "); } Console.WriteLine(); Console.ReadKey(); } } }

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

0 5 10 15 20 a b c d e

Fitur Generics

Generics adalah teknik yang memperkaya program Anda dengan cara berikut −

Metode Generik

Pada contoh sebelumnya, kami telah menggunakan kelas generik; kami dapat mendeklarasikan metode generik dengan parameter tipe. Program berikut menggambarkan konsep ini −

Live Demo
using System; using System.Collections.Generic; namespace GenericMethodAppl { class Program { static void Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } static void Main(string[] args) { int a, b; char c, d; a = 10; b = 20; c = 'I'; d = 'V'; //display values before swap: Console.WriteLine("Int values before calling swap:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("Char values before calling swap:"); Console.WriteLine("c = {0}, d = {1}", c, d); //call swap Swap<int>(ref a, ref b); Swap<char>(ref c, ref d); //display values after swap: Console.WriteLine("Int values after calling swap:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("Char values after calling swap:"); Console.WriteLine("c = {0}, d = {1}", c, d); Console.ReadKey(); } } }

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

Int values before calling swap: a = 10, b = 20 Char values before calling swap: c = I, d = V Int values after calling swap: a = 20, b = 10 Char values after calling swap: c = V, d = I

Delegasi Generik

Anda dapat mendefinisikan delegasi generik dengan parameter tipe. Misalnya −

delegate T NumberChanger<T>(T n);

Contoh berikut menunjukkan penggunaan delegasi ini −

Live Demo
using System; using System.Collections.Generic; delegate T NumberChanger<T>(T n); namespace GenericDelegateAppl { class TestDelegate { static int num = 10; public static int AddNum(int p) { num += p; return num; } public static int MultNum(int q) { num *= q; return num; } public static int getNum() { return num; } static void Main(string[] args) { //create delegate instances NumberChanger<int> nc1 = new NumberChanger<int>(AddNum); NumberChanger<int> nc2 = new NumberChanger<int>(MultNum); //calling the methods using the delegate objects nc1(25); Console.WriteLine("Value of Num: {0}", getNum()); nc2(5); Console.WriteLine("Value of Num: {0}", getNum()); Console.ReadKey(); } } }

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

Value of Num: 35 Value of Num: 175

Bahasa C

  1. C# Hello World – Membangun Aplikasi C# Pertama Anda
  2. Memahami Kata Kunci dan Pengidentifikasi C#: Aturan, Daftar, dan Praktik Terbaik
  3. Menguasai Variabel dan Tipe Data Primitif C#: Panduan Lengkap
  4. Operator C# – Panduan Lengkap tentang Operator dalam C#
  5. Menguasai Operator Bitwise dan Bit Shift C#: Panduan Komprehensif
  6. Dasar-Dasar C#: Esensial Input dan Output
  7. Ekspresi, Pernyataan, dan Blok C#: Panduan Komprehensif dengan Contoh Praktis
  8. Menguasai Komentar C#: Jenis, Praktik Terbaik, dan Dokumentasi XML
  9. Menguasai Pernyataan Switch C#: Sintaks, Contoh, dan Praktik Terbaik
  10. Operator Ternary C#: Panduan Ringkas untuk Ekspresi Kondisional