Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Hasil Kata Kunci dalam C#

Hasil Kata Kunci dalam C#

王林
王林asal
2024-09-03 15:26:44317semak imbas

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.

Bagaimanakah Kata Kunci Hasil berfungsi dalam C#?

  1. Jadi, bagaimanakah kata kunci dalam C#? Apakah pelaksanaan dalaman kata kunci dalam pengkompil C#? Jom faham. Kaedah yang mengandungi kata kunci hasil boleh digunakan oleh gelung iterator seperti pertanyaan foreach atau LINQ. Setiap lelaran gelung membuat panggilan kepada kaedah. Kod dalam kaedah dilaksanakan sehingga penyataan pulangan hasil atau pemutusan hasil ditemui.
  2. Kedudukan semasa pelaksanaan dalam kaedah dikekalkan dan lelaran seterusnya diteruskan dari tempat ia berhenti dalam lelaran sebelumnya.
  3. Ini adalah mudah, bukan? Mari kita masuk ke dalam pelaksanaan teknikal yang sama. Kaedah yang mengandungi kata kunci hasil mesti sentiasa mengembalikan IEnumerable atau IEnumerator. Setiap kali pengkompil menemui kata kunci hasil, ia tahu bahawa kaedah itu digunakan oleh lelaran. Apabila kaedah dipanggil, pengkompil tidak melaksanakan badan kaedah seperti biasa.
  4. Sebaliknya ia melaksanakan badan kaedah dan mengembalikan set terkumpul IEnumerable kepada pembolehubah lelaran yang digunakan. Pada setiap panggilan kaedah, pengkompil mencari pernyataan hasil dan menjeda pelaksanaan pada pernyataan itu. Lelaran gelung seterusnya meneruskan pelaksanaan dari lokasi yang dijeda terakhir. Ini berterusan sehingga keadaan keluar gelung atau penyataan pemutusan hasil. Untuk menyimpan maklumat keadaan selepas setiap lelaran, pengkompil mencipta mesin keadaan.

Contoh Kata Kunci Hasil dalam C#

Mari kita pertimbangkan beberapa contoh:

Contoh #1 – Kaedah

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;
}
}
}

Hasil Kata Kunci dalam C#

Contoh #2 – Aksesor

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; }
}
}

Hasil Kata Kunci dalam C#

Contoh #3 – pemecahan hasil

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;
}
}
}

Hasil Kata Kunci dalam C#

Jika kita menukar elementToFind 1234, outputnya ialah –

Hasil Kata Kunci dalam C#

Peraturan

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.

Kelebihan

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.

Kesimpulan – Kata Kunci Hasil dalam C#

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!

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:C# Lambda ExpressionArtikel seterusnya:C# Lambda Expression