C # 5 , eşzamansız programlama için async
ve await
modelini tanıttıktan sonra , C # topluluğu, aşağıdaki gibi beklenen bir tür döndüren yöntemlere bir "Eşzamansız" son ek eklemek için bir adlandırma kuralına geldi:
interface Foo
{
Task BarAsync();
}
Birçok statik kod analizörü (hem Roslyn tabanlı hem de Roslyn tabanlı değil) o zamandan beri eşzamansız programlama etrafında kod kokusu algılandığında bu adlandırma kuralına bağlı olarak yazılmıştır.
Şimdi C # 8, kendileri beklenmeyen ancak birlikte kullanılabilen asenkron numaralandırılabilir kavramını tanıttığına göre, await foreach
geri dönen yöntemleri adlandırmak için iki seçenek var gibi görünüyor IAsyncEnumerable
:
interface Foo
{
// No "Async" suffix, indicating that the return value is not awaitable.
IAsyncEnumerable<T> Bar<T>();
}
veya
interface Foo
{
// With "Async" suffix, indicating that the overall logic is asynchronous.
IAsyncEnumerable<T> BarAsync<T>();
}
Yukarıdaki seçeneklerle ilgili olarak, C # 5 adlandırma kuralının nasıl net bir şekilde standartlaştırıldığı ve programcıların fikir tabanlı kararına bırakılmadığı gibi, kesin bir adlandırma kuralları kılavuzu (C # dil ekibinden, .NET Vakfı'ndan veya diğer yetkililerden) var mı?
Async
, geri dönen yöntemler için sonek kullanır IAsyncEnumerable
, örn. ChannelReader.ReadAllAsync . Diğer durumlarda, örneğin AsAsyncEnumerable()
zaten açık olan EF Core'da kullanılır
async
veawait
içeride kullanın ) ve msdn örneği aynı gösteriyor