از زمان ارائهی 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 بهبود ...
در الگوهایی که به عنوان واسط بین اپلیکیشن و دیتابیس تعریف میکنیم نام دو الگوی Repository و Unit of work به چشم میخورد. در این سایت بارها این مباحث به صورت گفتمان و مقالات تکرار شدهاند و میدانیم که این الگوها کمک شایانی برای بالا بردن کارآیی برنامه، عدم تکرار کد، قابلیت استفاده مجدد و راحتی کار برای آزمونهای واحد و چهارچوبهای تقلید میکنند. Unit of Work یا الگوی کار در واقع یک الگو، جهت جمع آوری عملیات کار با دیتابیس است ...
روشهای زیادی برای بازگشت چندین مقدار از یک متد وجود دارند؛ مانند استفادهی از آرایهها برای بازگشت اشیایی از یک جنس، ایجاد یک کلاس سفارشی با خواص متفاوت و استفاده از پارامترهای out و ref همانند روشهای متداول در C و ++C. در این بین روش دیگری نیز به نام Tuples از زمان NET 4.0. برای بازگشت چندین شیء با نوعهای مختلف، ارائه شدهاست که در C# 7 نحوهی تعریف و استفادهی از آنها بهبود قابل ملاحظهای یافتهاست.
Tuple چیست؟
...
در اینجا قصد داریم که دیتاهای استاتیک و دیتاهای پویا را بررسی کنیم. همانطور که میدانید مونگو تنها خواصی را که در کلاس وجود دارند ذخیره میکند و همانها را هم در برگشت به کلاس انتساب میدهد. ولی ممکن است برای بعضی از اسناد هر بار فیلدهایی را تعریف کنیم که در کلاس اصلی پراپرتی برای آن وجود ندارد. فیلدهایی که ممکن است در زمان اجرا آنها را بشناسیم. برای این کار دو روش متفاوت توسط تیم فنی مونگو پیشنهاد شده است.
اولین روش این است که یک پرا ...
یکی از نیازهایی که در حین کار با دیتابیسها احساس میشود، دریافت
اطلاعات ورودی از فرمتهای دیگر و یا تبدیل
دیتای موجود به قالبهای دیگر است. به عنوان مثال خروجی دیتا را
به CSV و یا اطلاعات CSV را در دیتابیس وارد کنیم.
در ادامهی کار با ابزارهای پشتیبان گیری که داخل شاخه Bin قرار داشتند، ابزارهای دیگری را معرفی میکنیم. MongoExport از اطلاعات داخل دیتابیس شما خروجی گرف ...
یکی از رکنهای اساسی یک دیتابیس، حفظ اطلاعات موجود بر روی سرور میباشد تا از لحاظ نگهداری و امنیت، تضمین بازگشت اطلاعات سابق وجود داشته باشد. برای پشتیبان گیری از اطلاعات، از فایل جداگانهی دیگری درشاخه Bin استفاده میکنیم که MongoDump نام دارد و یک فایل دامپ را ایجاد میکند. این فایل شامل تعدادی از سوییچهای زیر میباشد: نام پارامتر شرح کارکرد c- یا collection-- میتواند پشتیبانی گیری را به یک کالکشن خاص محدود کند ...