Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Deyimi ve yineleyici yöntemleriyle
deyimi ve yineleyici yöntemleriyle ilgili çok sayıda yield return vardır:
- CS1622: Yineleyiciden değer döndürülemez. Bir değer döndürmek için yield return deyimini veya yinelemeyi sonlandırmak için verim sonu kullanın.
- CS1624: 'tür' bir yineleyici arabirim türü olmadığından 'accessor' gövdesi yineleyici bloğu olamaz
- CS1625: Finally yan tümcesinin gövdesinde verim yapılamıyor
- CS1626: Catch yan tümcesine sahip bir try bloğunun gövdesinde bir değer verilemez
- CS1627: Verim dönüşü sonrasında beklenen ifade
- CS1629: Güvenli olmayan kod yineleyicilerde görünmeyebilir
- CS1631: Catch yan tümcesinin gövdesinde bir değer verilemez
- CS1637: Yineleyicilerin güvenli olmayan parametreleri veya verim türleri olamaz
- CS4013: Türün örneği iç içe bir işlev, sorgu ifadesi, yineleyici bloğu veya zaman uyumsuz yöntem içinde kullanılamaz
- CS8154: Gövde, başvuruyla döndürdüğünden yineleyici bloğu olamaz
- CS8176: Yineleyicilerde başvuruya göre yerel ayarlar bulunamaz
- CS9238: 'güvenli olmayan' bir blokta 'verim getirisi' kullanılamaz
-
CS9239:
&işleç, yineleyici yöntemlerindeki parametrelerde veya yerel değişkenlerde kullanılamaz.
Yineleyici yönteminin yapısı
Yineleyici yöntemi C# dilindeki birkaç kurala uygun olmalıdır. Yineleyici yönteminiz bu kurallardan birini veya daha fazlasını ihlal ettiğinde derleyici aşağıdaki hataları gösterir:
- CS1622: Yineleyiciden değer döndürülemez. Bir değer döndürmek için yield return deyimini veya yinelemeyi sonlandırmak için verim sonu kullanın.
- CS1624: 'tür' bir yineleyici arabirim türü olmadığından 'accessor' gövdesi yineleyici bloğu olamaz
- CS1627: Verim dönüşü sonrasında beklenen ifade
- CS1637: Yineleyicilerin güvenli olmayan parametreleri veya verim türleri olamaz
- CS8154: Gövde, başvuruyla döndürdüğünden yineleyici bloğu olamaz
Yineleyici yönteminizin aşağıdaki kurallara uyması gerekir:
- Yineleyici yöntemi (
yield returnve isteğe bağlı olarakyield break) bir dizi döndürmek için deyiminireturnde kullanamaz. - Yineleyici yöntemi, bir yineleyici arabirim türünü dönüş türü olarak bildirmelidir. Yineleyici arabirim türleri şunlardır: IEnumerable, IEnumerable<T>, IEnumerator, . IEnumerator<T>
- Deyim
yield return, bir dizinin parçası olarak döndürülecek bir ifade içermelidir.yield return;geçerli değil. - Yineleyici yöntemi, işaretçiler gibi parametre olarak güvenli olmayan türleri kullanamaz.
- Yineleyici yöntemi, işaretçiler gibi güvenli olmayan türlere sahip olamaz
yield return. - Yineleyici yöntemi tarafından
yield returnyapamazref. Değere göre döndürmelisiniz.
Yineleyici yöntemleriyle ilgili kısıtlamalar
Yineleyici yönteminin gövdesi, deyimi ve bağlamı yield return üzerindeki kısıtlamalara uygun olmalıdır. Yineleyiciniz bu kısıtlamalardan birini ihlal ettiğinde derleyici aşağıdaki hataları gösterir:
- CS1625: Finally yan tümcesinin gövdesinde verim yapılamıyor
- CS1626: Catch yan tümcesine sahip bir try bloğunun gövdesinde bir değer verilemez
- CS1631: Catch yan tümcesinin gövdesinde bir değer verilemez
- CS1629: Güvenli olmayan kod yineleyicilerde görünmeyebilir
- CS9238: 'güvenli olmayan' bir blokta 'verim getirisi' kullanılamaz
-
CS9239:
&işleç, yineleyici yöntemlerindeki parametrelerde veya yerel değişkenlerde kullanılamaz.
Bu hatalar, bir yineleyici bir öğe döndürdüğünden ve sonraki öğeyi oluşturmak için devam ettiğinden kodunuzun güvenlik kurallarını ihlal ettiğini gösterir:
- Bir veya
yield returnyan tümcesindencatchyapamazsınızfinally. - Catch yan tümcesi olan bir
yield returnbloktan yapamazsınıztry. - Bir bloktan
yield returnyapamazsınızunsafe. Yineleyicinin bağlamı, kapsayansafeblok içinde iç içeunsafebir blok oluşturur. - Yineleyici yöntemindeki
&bir değişkenin adresini almak için işlecini kullanamazsınız.
C# 13'e geçmeden önce yineleyiciler kod içeremez unsafe (CS1629). C# 13'le başlayarak bu kısıtlama gevşetilir. Tüm yield return deyimlerin güvenli bir bağlamda olması gerekir, ancak yineleyici yöntemi kod içerebilir unsafe .
yineleyici yöntemlerinde başvuru güvenliği
Yineleyici yöntemlerin özel başvuru güvenliği kısıtlamaları vardır. Bu kurallar C# 13'te gevşetilir:
- CS4013: Türün örneği iç içe bir işlev, sorgu ifadesi, yineleyici bloğu veya zaman uyumsuz yöntem içinde kullanılamaz
- CS8176: Yineleyicilerde başvuruya göre yerel ayarlar bulunamaz
C# 13'e geçmeden önce yineleyiciler yerel değişkenleri bildiremedi ref . Bir türün değişkenlerini ref struct bildiremediler.
C# 13'den başlayarak, ref struct türler deyimler arasında yield return erişilmiyorsa yineleyici yöntemlerinde kullanılabilir. C# 13'le başlayarak yineleyici yöntemleri yerel değişkenleri bildirebilir ref .