از زمان ارائهی C# 5 و معرفی الگوهای async/await ، تنها نوعهای خروجی پشتیبانی شده، <Task، Task<T و void (در موارد خاص) بودند. مشکل همراه با این روش، اجبار به وهله سازی رسمی یک Task است؛ حتی اگر نوع خروجی کاملا مشخص باشد.
برای نمونه در متد ذیل، میزان حجم مصرفی در یک پوشه بازگشت داده میشود: public async Task<long> GetDirectorySize(string path, string searchPattern)
{
if (!Directory.EnumerateFileSystemEntri ...
C# 7 به همراه تغییرات قابل توجهی در مورد نحوهی دریافت خروجی از متدها است که نمونههایی از آنها را مانند tuples و out variable ، پیشتر بررسی کردیم. در ادامه تغییرات جدید دیگری را به نام ref locals و ref returns نیز بررسی خواهیم کرد و هدف از آن، کاهش تعداد بار کپی کردن مقادیر و یا اعمال dereferencing جهت بالا بردن کارآیی برنامه هستند.
انتقال توسط مقدار
اگر پارامتری به صورت value type تعریف شود، این مقدار درو ...
یکی از امکانات جالب سیشارپ که در نسخه 6 معرفی شد، قابلیت Expression-Bodied Members بود. در نسخه 7 سیشارپ، امکانات جدیدتری اضافه شده است؛ به عنوان مثال اکنون میتوان برای constructors, finalizers و همچنین get and set برای پراپرتیها و ایندکسرها نیز از این قابلیت استفاده کرد.
استفاده از expression body برای constructors public class Person
{
public string FirstName { get; set; }
public Person(s ...
در زبان برنامه نویسی #C، هر متد، توانایی برگرداندن یک مقدار را دارد و در مواقعی نیاز داریم بیشتر از یک مقدار را از یک متد به عنوان خروجی دریافت کنیم که استفاده از پارامترهای out و ref و یا Tuple راه حلهایی برای رسیدن به این مقصود میباشند.
یکی از تازههای 7 #C، ساده شدن تعریف out parameterها نسبت به قبل میباشد که باعث مرتب شدن کدها نیز میشود که در ادامه به آن میپردازیم.
تا قبل از ارائه 7 #C، برای ار ...
هرچند کار کردن با کلاسها و اینترفیسهای strongly typed سادهتر است، اما گاهی از اوقات نیاز است تا با نوع object کار کرد. به علاوه حتی در حین کار کردن با کلاسها و اینترفیسها هم نیاز است تا نوع خاصی از کلاسهای مشتق شده را جهت فراخوانی متدی ویژه، بررسی کرد. به همین جهت مفهوم «pattern matching» به C# 7 اضافه شدهاست تا بتوان با سلسله مراتب اشیاء، سادهتر کار کرد. برای این منظور اپراتور is و عبارت switch، با الگوهای const ،var و type بهبود ...
روشهای زیادی برای بازگشت چندین مقدار از یک متد وجود دارند؛ مانند استفادهی از آرایهها برای بازگشت اشیایی از یک جنس، ایجاد یک کلاس سفارشی با خواص متفاوت و استفاده از پارامترهای out و ref همانند روشهای متداول در C و ++C. در این بین روش دیگری نیز به نام Tuples از زمان NET 4.0. برای بازگشت چندین شیء با نوعهای مختلف، ارائه شدهاست که در C# 7 نحوهی تعریف و استفادهی از آنها بهبود قابل ملاحظهای یافتهاست.
Tuple چیست؟
...