نوع Span به همراه NET Core 2.1. ارائه شد. یکی از مهمترین مزایای آن امکان دسترسی به قسمتی از حافظه (توسط متد Split آن)، بدون ایجاد سربار کپی یا تخصیص مجدد حافظهای برای دسترسی به آن است. قدم بعدی، بسط این قابلیت به امکانات ذاتی زبان #C است؛ تحت عنوان ویژگی Ranges که امکان دسترسی مستقیم به بازهای/قسمتی از آرایهها، رشتهها و یا Spanها را میسر میکند.
معرفی عملگر Hat
برای دسترسی به آخرین عضو یک آرایه عموما ...
همانطور که اطلاع دارید، کنترلهای Calendar و DatePicker در WPF، از تقویمهای مختلف پشتیبانی نمیکنند و نمونههایی که در سطح اینترنت موجود است، ظاهر و استایل مناسبی ندارند. بنابر این تصمیم گرفتم تا خودم دست به کار شوم و این کمبود را حل کنم. نتیجهی آن شد کتابخانهی PersianToolkit که بصورت استاندارد تقویم شمسی را به کنترلهای Calendar و DatePicker اضافه میکند و استایلهای زیبایی را هم به همراه خود دارد. این کتابخانه شامل تمام مناسبتهای ...
اگر مطلب « تفاوت بین Interface و کلاس Abstract در چیست؟ » را مطالعه کرده باشید، به این نتیجه میرسید که طراحی یک کتابخانهی عمومی با اینترفیسها، بسیار شکنندهاست. اگر عضو جدیدی را به یک اینترفیس عمومی اضافه کنیم، تمام پیاده سازی کنندههای آنرا از درجهی اعتبار ساقط میکند و آنها نیز باید این عضو را حتما پیاده سازی کنند تا برنامهای که پیش از این به خوبی کار میکرده، باز هم بدون مشکل کامپایل شده و کار کند. هدف از ویژگی جدید «پیاده سازیه ...
نوعهای ارجاعی (Reference Types) در #C، همیشه نالپذیر بودهاند؛ در مقابل نوعهای مقداری (value types) مانند DateTime که برای نالپذیر کردن آنها باید یک علامت سؤال را در حین تعریف نوع آنها ذکر کرد تا تبدیل به یک نوع نالپذیر شود (DateTime? Created). بنابراین عنوانی مانند «نوعهای ارجاعی نالنپذیر» شاید آنچنان مفهوم نباشد.
خالق Null در زبانهای برنامه نویسی، آنرا یک اشتباه چند میلیارد دلاری میداند! و به عنوان یک توسعه دهندهی د ...
پیشنیاز کار با C# 8.0
هرچند بسیاری از قابلیتهای C# 8.0 در خود کامپایلر #C پیاده سازی شدهاند، اما برای مثال قابلیتی مانند «پیاده سازی پیشفرض اینترفیسها» نیاز به یک runtime جدید دارد که به همراه NET Core 3.0. ارائه میشود. بنابراین NET Full 4x. شاهد پیاده سازی C# 8.0 نخواهد بود. همچنین یک سری از قابلیتهای C# 8.0 وابستهی به NET Standard 2.1. و netcoreapp3.0 هستند؛ مانند نوعهای جدید System.IAsyncDisposable و ...
Blazer یک
فریمورک جدید تحت وب هست که این امکان را به برنامه نویسان دات نت میدهد تا از
طریق Open Web Standards بتوانند کدهای خود را در مرورگر اجرا و تجربه جدیدی از ساخت برنامههای تک صفحهای را
داشته باشند. در این نوشتار قصد داریم ساختار و نحوه کارکرد
این فناوری را بررسی نماییم. قبل از هر چیزی به دوران قبل از ایجاد Web Assembly
برمیگردیم : همانطور که در شکل زیر میبینید، زمان ...
Zstandard یا به اختصار Zstd، یک الگوریتم فشرده سازی سریع و بدون افت کیفیت است که از سرعت و قدرت خوبی برخوردار است. این الگوریتم توسط Facebook توسعه داده شده و استفاده میشود. الگوریتمهای دیگری مانند Snappy (الگوریتم فشرده سازی گوگل)، LZ4 (جز سریعترین الگوریتم ها) و LZMA (جز قویترین الگوریتمها) نیز وجود دارند ولی Zstd تعادل (trade-off) خوبی بین سرعت و میزان فشرده سازی را فراهم میکند. در این مقاله برای فشرده سازی اطلاع ...
پیش نیاز این مطلب، قسمت قبل آن است. در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط Reflection به صورت خودکار انجام میشد. در این قسمت میخواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mappingها را فراهم کنیم. سورس کامل مثال را میتوانید در ...
آموزش کامل AutoMapper قبلا در سایت ارائه شده است. در این مقاله میخواهیم Mapping نوعهای مختلف بین Dto و Entityهای پروژه را توسط Reflection به صورت خودکار انجام دهیم. سورس کامل مثال را میتوانید در این ریپازیتوری مشاهده کنید. در این روش ما یک کلاس جنریک را به نام BaseDto داریم که تمام Dtoهای ما برای نگاشت خودکار باید از آن ارث بری کنند. در مثال زیر کلاس PostDto لازم است به کلاس Post نگاشت شود. پس خواهیم داشت : public class ...
هنگامیکه درحال طراحی کلاسهایی هستیم که وابستگیهایی دارند،
ممکن است با شرایطی مواجه شویم که به این
وابستگیها نیاز نباشد و یا به رفتار عادی بعضی از وابستگیها نیاز نداشته باشیم.
شاید
راهی که در این مواقع به ذهن برسد این باشد
که بجای شیء واقعی وابستگی موردنظر، از یک شیء Null Reference استفاده
کنیم. ولی
استفاده از این روش کدهایمان را پیچیده
خواهد کرد؛ چون هر جای کد که نیازمند استفادهی از اعضای شیء وابستگی موردنظرمان باشیم ...