Rumah > pembangunan bahagian belakang > Tutorial C#.Net > Terangkan cara generik berfungsi dalam C#

Terangkan cara generik berfungsi dalam C#

WBOY
Lepaskan: 2023-08-27 23:45:02
ke hadapan
1057 orang telah melayarinya

解释泛型在 C# 中的工作原理

Generik telah ditambah dalam C# versi 2.0 dan merupakan salah satu konsep yang paling penting dalam bahasa. Ia membolehkan anda menulis kod boleh guna semula, berprestasi tinggi yang selamat jenis pada masa penyusunan. Generik membolehkan anda menggunakan jenis dalam kod anda tanpa mengetahui jenisnya terlebih dahulu.

Generik digunakan di banyak tempat dalam .NET, termasuk koleksi, perwakilan dan kod tak segerak. Dengan generik, anda tidak perlu mengetahui saiz koleksi terlebih dahulu dan anda boleh menggunakan generik dengan sebarang jenis elemen, malah jenis data tersuai khusus untuk kod anda. C# menyediakan sokongan untuk jenis generik (kelas, antara muka, dll.) dan kaedah generik.

Dalam generik anda mempunyai parameter jenis dan parameter jenis. Ini serupa dengan kaedah yang mempunyai parameter yang boleh anda hantar ke kaedah tersebut.

Jenis Generik

Sintaks untuk mengisytiharkan jenis generik terdiri daripada parameter jenis yang disertakan dalam kurungan sudut. Nama jenis. Contohnya, Locator ialah kelas generik dalam contoh di bawah.

public class Locator<T>
{

}
Salin selepas log masuk

Untuk membuat instance Locator, gunakan kata kunci baharu diikuti dengan nama kelas. Walau bagaimanapun, anda boleh menentukan jenis sebenar yang akan dihantar sebagai parameter dan bukannya T. Contoh berikut melepasi jenis rentetan sebagai parameter.

var stringLocator = new Locator<string>();
Salin selepas log masuk

Anda boleh menggunakan parameter jenis (T) pada kaedah kelas seperti yang ditunjukkan dalam contoh di bawah.

public class Locator{
   public IList Items { get; set; }

      public T Locate(int index){
      return Items[index];
   }
}
var stringLocator = new Locator<string>();
string item = stringLocator.Locate(2);
Salin selepas log masuk

Satu lagi faedah generik ialah IntelliSense yang disediakan oleh editor. Apabila anda menaip stringLocator.Locate(4) dalam Visual Studio atau VS Code dan tuding pada nama kaedah ia menunjukkan bahawa ia mengembalikan rentetan dan bukannya T. Pengkompil akan membuang ralat jika anda cuba memberikan hasil kepada sebarang jenis selain daripada rentetan. Contohnya, apabila

// Error: Cannot implicitly convert type &#39;string&#39; to &#39;int&#39; [c-sharp]csharp(CS0029)
int item = stringLocator.Locate(2);
Salin selepas log masuk

mewarisi daripada jenis asas generik atau antara muka generik, jenis generik boleh menggunakan parameter jenis sebagai argumen jenis. Jenis LinkedList generik melaksanakan antara muka IEnumerable generik serta antara muka lain.

public class LinkedList<T> : IEnumerable<T>
Salin selepas log masuk

Kaedah Generik

Kaedah generik hanyalah kaedah yang mengisytiharkan parameter jenis yang boleh anda gunakan di dalam kaedah dan menggunakannya sebagai parameter dan jenis pulangan. Dalam contoh berikut, Swap ialah kaedah generik yang mengambil dua parameter jenis T dan mengembalikan tika T .

public class Swapper{
   public T Swap<T>(T first, T second){
      T temp = first;
      first = second;
      second = temp;
      return temp;
   }
}
Salin selepas log masuk

Seperti jenis generik, apabila anda memanggil kaedah generik ia akan mengembalikan pembolehubah yang ditaip kuat.

var swapper = new Swapper();
int result = swapper.Swap<int>(5, 3);
Salin selepas log masuk

boleh mempunyai berbilang parameter umum. Kelas Kamus dalam ruang nama System.Collections.Generic mempunyai dua jenis parameter, kunci dan nilai.

public class Dictionary<TKey, TValue>
Salin selepas log masuk

Akhir sekali, adalah penting untuk memahami perkara yang universal. Untuk jenis, semuanya boleh menjadi generik kecuali penghitungan. Ini termasuk -

  • Kelas
  • Struktur
  • Antaramuka
  • Delegasi

Untuk ahli jenis, hanya kaedah dan jenis bersarang boleh menjadi generik. Ahli berikut tidak boleh bersifat generik -

  • Field
  • Properties
  • Indexer
  • Constructor li>
  • Events
  • Terminator

Contoh

Live

reee

Atas ialah kandungan terperinci Terangkan cara generik berfungsi dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan