Hasil ialah kata kunci kontekstual dalam C#. Kata kunci kontekstual ialah kata kunci dalam C# yang tidak dikhaskan untuk program lengkap. Sebaliknya kata kunci tersebut adalah kata kunci yang dikhaskan untuk bahagian tertentu program yang mana kata kunci itu boleh digunakan secara relevan. Kata kunci ini boleh digunakan sebagai pengecam yang sah di mana-mana sahaja kaitannya tidak menyampaikan sebarang makna istimewa kepada pengkompil.
Kata kunci hasil menunjukkan bahawa kaedah atau pengakses yang mengandungi kata kunci ialah kaedah/akses lelar. Kaedah iterator/aksesor ialah kaedah yang tidak mengembalikan satu nilai. Sebaliknya, ia dipanggil dalam lelaran dan mengembalikan nilai yang berbeza dalam setiap lelaran.
Sintaks
Sintaks kata kunci hasil adalah agak mudah. Anda hanya perlu menentukan kata kunci sebelum pernyataan pemulangan kaedah atau pengakses.
yield return <expression>;
ATAU
yield break;
Ini ialah dua pelaksanaan kata kunci. Apabila digunakan dengan pernyataan pulangan, kata kunci hasil mengembalikan nilai seterusnya yang dikira daripada ungkapan, sehingga keadaan keluar ungkapan dipenuhi. Apabila digunakan dengan kata kunci rehat, kata kunci hasil memecahkan lelaran dan pelaksanaan program keluar daripada kaedah/aksesor.
Mari kita pertimbangkan beberapa contoh:
Contoh di bawah menjana siri Fibonacci menggunakan kata kunci hasil.
using System; using System.Collections.Generic; public class Program { public static void Main() { foreach (int ele in GetFibonacciSeries(10)) { Console.Write(ele + "\t"); } } public static IEnumerable<int> GetFibonacciSeries(int x) { for (int a = 0, b = 0, c = 1; a < x; a++) { yield return b; int temp = b + c; b = c; c = temp; } } }
Contoh berikut menggunakan kata kunci hasil dengan pengakses dapatkan.
using System; using System.Collections.Generic; public class Program { public static void Main() { foreach (Day day in new Days().DaysOfWeek) { Console.WriteLine("Day {0} of the week is {1}", day.DayOfWeek, day.DayName); } } public static IEnumerable<int> Show(int x) { for (int a = 0, b = 0, c = 1; a < x; a++) { yield return b; int temp = b + c; b = c; c = temp; } } public class Days { public IEnumerable<Day> DaysOfWeek { get { yield return new Day{DayName = "Sunday", DayOfWeek = 1}; yield return new Day{DayName = "Monday", DayOfWeek = 2}; yield return new Day{DayName = "Tuesday", DayOfWeek = 3}; yield return new Day{DayName = "Wednesday", DayOfWeek = 4}; yield return new Day{DayName = "Thursday", DayOfWeek = 5}; yield return new Day{DayName = "Friday", DayOfWeek = 6}; yield return new Day{DayName = "Saturday", DayOfWeek = 7}; } } } public class Day { public string DayName { get; set; } public int DayOfWeek { get; set; } } }
Contoh berikut menunjukkan penggunaan pernyataan pecah hasil. Lelaran ditamatkan sebaik sahaja nombor dalam siri ditemui atau had carian maksimum dicapai.
using System; using System.Collections.Generic; public class Program { public static void Main() { int elementToFind = 21; int maxElements = 100; foreach (int ele in FindFibonacciNumber(elementToFind, maxElements)) { Console.Write("Found the number " + elementToFind + " in Fibonacci series."); } } public static IEnumerable<int> FindFibonacciNumber(int n, int max) { for (int a = 0, b = 0, c = 1; true; a++) { if (a > max) { Console.Write("Searched first " + max + " Fibonacci numbers. Element " + n + " not found"); yield break; } if (b == n) { yield return b; yield break; } int temp = b + c; b = c; c = temp; } } }
Jika kita menukar elementToFind 1234, outputnya ialah –
1) Setiap elemen mesti dikembalikan satu demi satu menggunakan pernyataan pulangan hasil.
2) Jenis pulangan mestilah IEnumerable atau IEnumerator.
3) Anda tidak boleh menggunakannya dalam, ref atau keluar kata kunci dengan hasil.
4) Kata kunci hasil tidak boleh digunakan dengan Ungkapan Lambda atau Kaedah Tanpa Nama.
5) Penyata pulangan hasil tidak boleh berada di dalam blok cuba-tangkap. Ia boleh berada di dalam blok cuba-akhirnya.
6) Pernyataan pecah hasil tidak boleh berada di dalam blok cuba-akhir. Ia boleh berada di dalam blok cuba tangkap.
Kata kunci hasil mengelakkan keperluan untuk membuat koleksi sementara. Anda tidak perlu membuat koleksi sementara untuk menyimpan data sebelum ia dikembalikan daripada kaedah. Selain itu, keadaan pelaksanaan kaedah tersebut dikekalkan dan oleh itu tidak perlu disimpan secara eksplisit dalam kod.
Kami belajar daripada artikel ini bahawa cara menghasilkan kata kunci ialah kata kunci yang sangat berguna dalam C#. Ia membantu masalah kompleks kod dengan seberapa sedikit baris yang mungkin dan juga menjadikan kod mudah difahami. Ini ialah artikel peringkat lanjutan tentang perjalanan C#. Adalah disyorkan untuk mencuba dan menggunakan kata kunci dalam kod anda supaya anda mendapat latihan praktikal.
Atas ialah kandungan terperinci Hasil Kata Kunci dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!