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 چیست؟
...
ممکن است برای شما هم پیش آمده باشد که بخواهید پس از پابلیش برنامهای که نوشتهاید، تمامی فایلهای اسمبلی استفاده شده در برنامه را نیز با فایل خروجی آن ادغام کنید و به اصلاح تنها یک فایل، برای اجرا داشته باشید. مایکروسافت ابزاری را به نام ILMerge ، برای اینکار معرفی کرده است که به وسیله آن، امکان ادغام اسمبلیها با فایل اصلی برنامه وجود دارد؛ بجز اسمبلیهای مربوط به WPF، به خاطر داشتن فایلهای XAML. برای حل این مسئله میتوان از دو راه استف ...
اگر به سورسهای ASP.NET Identity نگارشهای 2 و 3 دقت کنیم، این تفاوت به وضوح قابل مشاهدهاست: در نگارش 2 public virtual DateTime? LockoutEndDateUtc { get; set; } در نگارش 3 public virtual DateTimeOffset? LockoutEnd { get; set; }
و در کل، در طراحی تمام قسمتها و اجزای NET Core. بجای استفادهی از DateTime متداول، شاهد استفادهی گستردهای از DateTimeOffset هستیم که از زمان ارائهی NET 3.5. معرفی شدهاست. چرا؟
...
Options یا Maybe در یک زبان تابعی مثل #F، نشان دهندهی این است که شیء (Object) ممکن است وجود نداشته باشد(Null Reference) که یکی از مهمترین ویژگیهای یک زبان شیءگرا مثل #C و یا Java محسوب میشود . ما برنامه نویسها (اغلب) از هرچیزی که باعث کرش برنامه میشود، بیزاریم و برای اینکه برنامه کرش نکند، مجبور میشویم تمام کدهای خود را از Null Reference محافظت کنیم. تمام این مشکلات توسط Tony Hoare مخترع ALOGL است
که تنها دل ...
مقدمه
وراثت، بین کلاسهای والد (Parent) و فرزند (Child) ارتباط ایجاد میکند. در این مطلب، با یک مثال ساده، نکات مختلفی را بررسی خواهیم کرد.
در ابتدا کلاسهایی را با نام parent و child، به شکل زیر ایجاد میکنیم: public class Parent
{
public Parent()
{
Console.WriteLine("Parent Constructor");
}
public void Print()
{
Console.WriteLine("Parent Print");
}
}
...
در ادامه مطلب قبلی ، یکی از مشکلاتی که طراحی Builder از آن رنج میبرد، نقض کردن قانون command query separation است که در ادامه دربارهی این اصل بیشتر بحث خواهیم کرد. اصل Command query separation یا به اختصار CQS، در کتاب Object-Oriented Software Construction توسط Bertrand Meyer معرفی شدهاست. بر اساس آن، عملیاتهای سیستم باید یا Command باشند و یا Query و نه هر دوی آنها. وقتی یک کلاینت به امضای یک متد توجه میکند، اینکه این متد چه ...