Rumah  >  Artikel  >  pembangunan bahagian belakang  >  C# Predikat

C# Predikat

王林
王林asal
2024-09-03 15:27:251030semak imbas

Perwakilan jenis generik terbina ialah perwakilan predikat dalam C# yang ditakrifkan di bawah Sistem Ruang Nama. Ruang nama dan kaedah yang mengandungi set kriteria tertentu boleh digunakan dengan perwakilan predikat untuk menentukan sama ada parameter yang diluluskan boleh memenuhi kriteria yang diberikan atau tidak dan hanya satu input yang diambil oleh kriteria ini mengembalikan nilai sama ada benar atau salah dan perwakilan predikat adalah sama seperti perwakilan Func yang lain dan perwakilan Tindakan.

Sintaks:

public delegate bool Predicate <in P>(P obj);

Di mana jenis objek diwakili oleh P dan obj ialah objek yang membandingkan kriteria yang ditakrifkan dalam kaedah dan  diwakili oleh perwakilan predikat.

Kerja Perwakilan Predikat dalam C#

  • Fungsi yang mengembalikan benar atau salah ialah predikat dan rujukan kepada predikat ialah perwakilan predikat.
  • Ciri perwakilan predikat telah diperkenalkan dengan keluaran .NET 2.0. rangka kerja.
  • Fungsi predikat boleh ditakrifkan dan ia boleh dihantar sebagai parameter kepada mana-mana fungsi lain melalui perwakilan predikat.
  • Kes khas Func ialah perwakilan predikat yang mengambil hanya satu parameter sebagai input dan ia mengembalikan nilai Boolean yang sama ada benar daripada palsu.
  • Sebarang kaedah boleh ditulis di dalam perwakilan predikat walaupun ungkapan lambda atau kaedah tanpa nama.
  • Jenis generik diambil sebagai hujah oleh perwakilan predikat apabila ia digunakan dengan ungkapan lambda.

Contoh Predikat C#

Diberikan di bawah adalah contoh yang dinyatakan:

Contoh #1

Atur cara C# untuk menunjukkan penggunaan perwakilan predikat dalam atur cara untuk menyemak sama ada rentetan yang diberikan diluluskan sebagai parameter dalam huruf besar atau tidak.

Kod:

using System;
//a namespace called program is defined
namespace program
{
//a class called check is defined
public class check
{
//a Boolean method is defined to check if the given string is written in capital letters or not. If written in capital letters, true is returned else False is returned.
static bool IsUC(string stri)
{
return stri.Equals(stri.ToUpper());
}
//main method is called
static void Main(string[] args)
{
//a predicate delegate is defined with object type as string and IsUC is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
Predicate<string> isU = IsUC;
//The result of the predicate delegate is stored in a variable called res
bool res = isU("welcome to c#");
//the result is displayed
Console.WriteLine(res);
}
}
}

Output:

C# Predikat

Penjelasan:

  • Dalam program di atas, ruang nama yang dipanggil program ditakrifkan. Kemudian kelas yang dipanggil cek ditakrifkan. Kemudian kaedah Boolean ditakrifkan untuk menyemak sama ada rentetan yang diberikan ditulis dengan huruf besar atau tidak. Jika rentetan yang diberikan ditulis dengan huruf besar, benar dikembalikan jika salah dikembalikan. Kemudian kaedah utama dipanggil.
  • Kemudian perwakilan predikat ditakrifkan dengan jenis objek sebagai rentetan dan IsUC ialah objek yang membandingkan kriteria yang ditakrifkan dalam kaedah dan diwakili oleh perwakilan predikat. Kemudian hasil perwakilan predikat disimpan dalam pembolehubah yang dipanggil res. Kemudian hasilnya dipaparkan.

Contoh #2

Atur cara C# untuk menunjukkan penggunaan perwakilan predikat dalam atur cara untuk menyemak sama ada panjang rentetan yang diberikan kurang daripada nilai yang ditentukan atau tidak.

Kod:

using System;
//a class called program is defined
class program
{
// a predicate delegate is defined with object type as string
public delegate bool my_del(string stri);
// a method is defined inside a predicate delegate by passing the object as parameter to check if the length of the given string is less than a specified value. If less than the given specified value, true is returned else false is returned
public static bool fun(string stri)
{
if (stri.Length < 5)
{
return true;
}
else
{
return false;
}
}
//Main method is called
static public void Main()
{
// a predicate delegate is defined with object type as string and fun is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
my_del obj = fun;
//The string to be passed as a parameter to predicate delegate is written here
Console.WriteLine(obj("Shobha"));
}
}

Output:

C# Predikat

Penjelasan:

  • Dalam program di atas, kelas yang dipanggil program ditakrifkan. Kemudian perwakilan predikat ditakrifkan dengan jenis objek sebagai rentetan. Kemudian kaedah ditakrifkan di dalam perwakilan predikat dengan menghantar objek sebagai parameter untuk memeriksa sama ada panjang rentetan yang diberikan adalah kurang daripada nilai yang ditentukan. Jika panjang rentetan kurang daripada nilai yang ditentukan, benar dikembalikan jika palsu dikembalikan.
  • Kemudian kaedah Utama dipanggil. Kemudian perwakilan predikat ditakrifkan dengan jenis objek sebagai rentetan dan keseronokan ialah objek yang membandingkan kriteria yang ditakrifkan dalam kaedah dan diwakili oleh perwakilan predikat. Kemudian rentetan yang akan dihantar sebagai parameter kepada perwakilan predikat ditulis akhirnya.

Kelebihan

Diberikan di bawah adalah kelebihan Predikat C#:

  • Perwakilan Predikat berguna apabila kita perlu menapis senarai nilai.
  • Perwakilan predikat boleh dibuat sebaris untuk satu fungsi carian.
  • Perwakilan predikat boleh digunakan apabila kita perlu mencari item dalam koleksi generik.
  • Dengan menggunakan perwakilan predikat, panjang kod dipendekkan dan sama ada benar atau salah dikembalikan.
  • Kaedah tanpa nama, ungkapan lambda boleh ditetapkan kepada perwakilan predikat.
  • Perwakilan predikat menyediakan logik pada masa jalan dan ia boleh menjadi logik mudah atau logik rumit.

Atas ialah kandungan terperinci C# Predikat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Hasil Kata Kunci dalam C#Artikel seterusnya:Hasil Kata Kunci dalam C#