اشتراکها
لیست awesome-analyzers
اشتراکها
پروژهی Wintellect.Analyzers
اضافه شدن Generic Parsing به دات نت 7
تا قبل از دات نت 7، متدهای Parse و TryParse جزو استاندارد اغلب نوعها در دات نت بودند؛ اما امکان استفادهی جنریک از آنها وجود نداشت. این مشکل به لطف وجود اعضای استاتیک اینترفیسها در دات نت 7 و C# 11 برطرف شدهاست. برای این منظور دو اینترفیس جدید System.IParsable و System.ISpanParsable به دات نت 7 اضافه شدهاند که امکان دسترسی به متد T.Parse را میسر میکنند.
دو نمونه مثال از نحوهی استفادهی از این API جدید را در ادامه مشاهده میکنید:
اگر میخواستیم متد ParseIt را به صورت جنریک و بدون استفاده از ویژگیهای جدید زبان #C و دسترسی مستقیم به T.Parse بنویسیم، یک روش آن، استفاده از Reflection به صورت زیر میبود:
تا قبل از دات نت 7، متدهای Parse و TryParse جزو استاندارد اغلب نوعها در دات نت بودند؛ اما امکان استفادهی جنریک از آنها وجود نداشت. این مشکل به لطف وجود اعضای استاتیک اینترفیسها در دات نت 7 و C# 11 برطرف شدهاست. برای این منظور دو اینترفیس جدید System.IParsable و System.ISpanParsable به دات نت 7 اضافه شدهاند که امکان دسترسی به متد T.Parse را میسر میکنند.
دو نمونه مثال از نحوهی استفادهی از این API جدید را در ادامه مشاهده میکنید:
public static T ParseIt<T>(string content, IFormatProvider? provider) where T : IParsable<T> { return T.Parse(content, provider); } public IEnumerable<T> ParseCsvRow<T>(string content, IFormatProvider? provider) where T : IParsable<T> { return content.Split(',').Select(str => T.Parse(str, provider)); }
public static T ParseIt<T>(string content, IFormatProvider? provider) { var type = typeof(T); var method = type.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, new[] { typeof(string), typeof(IFormatProvider) }); return (T)method!.Invoke(null, new object?[] { content, provider })!; }
در حین توسعه نرم افزاری برای ویندوز کامپکت مرتبا به خطاهایی که قبلا برنخورده بودم میرسیدم. چند باری هم کارهای انجام شده را بررسی کردم و در فورومهای مرتبط دنبال سرنخی از راه حل گشتم ولی یا جوابی مرتبط وجود نداشت و یا راه حلهای پیشنهادی دور از حل مسئله بود؛ تا اینکه یکی از خطاها نظرم را جلب کرد:
پس از بررسی کلی دستگاه و راهنمای آن متوجه شدم ویندوزی که برای دستگاه ساخته شده، به صورت پیش فرض دارای دات نت نصب شدهاست. من هم از دات نت نسخهی سه با سرویس پک یک و ویندوز کامپکت نسخهی 6 استفاده میکردم. در حین اجرا و دیباگ برنامه بر روی دستگاه، اگر نسخهای از دات نت نصب باشد، زحمت بهروز کردن دات نت را برای توزیع نمیدهد و برنامه به مشکل بر میخورد. راه حل این مشکل هم ساخت ویندوز جدید بدون دات نت فریمورک است که حدود یک ساعت و نیم زمان میبرد:
Could not load type 'System.Windows.Forms.Form' from assembly 'System.Windows.Forms, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC'. System.Windows.Forms 3.5.7283.0 but 3.5.0.0 windows CE
برای انجام این فرآیند احتیاج به نصب مقدماتی بر روی یک ویندوز تازه است که ترتیب نصب آن نیز بسیار مهم است:
1. Microsoft Visual Studio 2005 2. Microsoft Visual Studio 2005 Service Pack 1 3. Microsoft Windows Embedded CE 6.0 Toolkit 4. Windows Embedded CE 6.0 Platform Builder Service Pack 1 5. Windows Embedded CE 6.0 R2 6. Windows Embedded CE 6.0 R3
- ویدیوی رایگان آموزشی در مورد جنبههای مختلف LINQ to Entities (دریافت، ماخذ)
- Mono و پشتیبانی از SIMD یا Single Instruction Multiple Data
برنامه نویسی موازی تنها به برنامه نویسی چند ریسمانی و چند هستهای خلاصه نمیشود. بلکه استفاده از تواناییهای پیشرفته در پروسسورهای مدرن امروزی Intel و AMD نیز توانایی قابل توجهی را در این عرصه ارائه میدهند. بسیاری از برنامههای نوشته شده به زبانهای C و CPP از SIMD جهت بالا بردن سرعت پردازشی استفاده میکنند ( برای مثال بالا بردن سرعت کار با ماتریسها و بردارها یا بهینه سازی حلقهها) و کامپایلرهای آنها نیز در این زمینه امکانات ویژهای را ارائه مینمایند. اما زبانهای بر پایه دات نت راه سادهای را برای استفاده از این توانایی ندارند.
با ارائه مونو 2.2 (شماره نگارشهای مونو (دات نت لینوکسی) با شماره نگارشهای دات نت فریم ورک مایکروسافت همخوانی ندارد و مستقل هستند)، این سناریو تغییر کرده است و فضای نام Mono.Simd ارائه شده است. به این صورت میتوان از تواناییهای SIMD (تنها SSE3 و قسمتی از SSE4 پشتیبانی میشود) در برنامههای دات نت استفاده نمود (که بیشتر بر روی عملیات سریع بر روی ماتریسها و بردارها متمرکز شده است).
جهت اطلاعات بیشتر میتوان به دمویی در اینباره رجوع کرد. دریافت
ماخذ
- کارتهای مرجع دات نت
سایت Dzone اخیرا در تکمیل برگههای مرجع پیشین خود، برگههای مرجع ASP.Net را نیز ارائه کرده است.
Core ASP.NET
برای دریافت نیاز به ثبت نام است و سپس درخواست لینک دانلود که به آدرس ایمیل شما ارسال خواهد شد.