C # 5 के बाद अतुल्यकालिक प्रोग्रामिंग के लिए मॉडल asyncऔर awaitमॉडल प्रस्तुत किया गया , C # समुदाय एक नामजद सम्मेलन में एक "Async" प्रत्यय जोड़ने के लिए एक आवेगपूर्ण प्रकार को लौटाने के तरीकों पर आया, जैसे:
interface Foo
{
Task BarAsync();
}
कई स्थिर कोड एनालाइज़र (रोसलिन-आधारित और गैर-रोसलिन-आधारित दोनों) तब से इस नामकरण सम्मेलन पर निर्भर करने के लिए लिखे गए हैं जब अतुल्यकालिक प्रोग्रामिंग के आसपास कोड गंध का पता लगाता है।
अब जब C # 8 ने अतुल्यकालिक एनुमेरबल्स की अवधारणा पेश की है, जो स्वयं प्रतीक्षा योग्य नहीं है, लेकिन इसके साथ संयोजन के रूप में उपयोग किया जा सकता है await foreach, नाम वापसी के तरीकों के लिए दो विकल्प प्रतीत होते हैं IAsyncEnumerable:
interface Foo
{
// No "Async" suffix, indicating that the return value is not awaitable.
IAsyncEnumerable<T> Bar<T>();
}
या
interface Foo
{
// With "Async" suffix, indicating that the overall logic is asynchronous.
IAsyncEnumerable<T> BarAsync<T>();
}
क्या उपरोक्त विकल्पों के संबंध में एक निश्चित नामकरण कन्वेंशन गाइडलाइन (C # भाषा टीम, .NET फाउंडेशन, या अन्य प्राधिकरणों से) है, जैसे कि C # 5 नामकरण कन्वेंशन को स्पष्ट रूप से मानकीकृत किया गया था और प्रोग्रामर के राय-आधारित निर्णय पर नहीं छोड़ा गया था?
Asyncवापसी के तरीकों के लिए प्रत्यय का उपयोग करता है IAsyncEnumerable, जैसे ChannelReader.ReadAllAsync । अन्य मामलों में, उदाहरण के लिए EF Core, AsAsyncEnumerable()का उपयोग किया जाता है जो पहले से ही स्पष्ट है
asyncएंड इनawait