Dalam C # Anda dapat membangun metode dengan tipe pengembalian IEnumerable<T>dan menggunakan yield returndan yield breakuntuk mengontrol aliran. Berikut adalah contoh sederhana yang menggunakan kedua kontrol:
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
yield break;
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield return i;
}
}
Pertanyaan saya adalah, mengapa awalnya dirancang untuk menggunakan dua kata kunci dengan yielddan tidak menggunakannya seperti berikut ini dengan single yield"menghasilkan nilai kembali":
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
return; // stop completely and return nothing
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield i; // yield the current value.
}
}
Bagi saya, ini lebih mudah dibaca dan dimengerti.
yield x;juga kesalahan sintaksis saat itu?