زمانیکه شما یک برنامهی دات نتی نوشته شده به زبان سی شارپ را کامپایل میکنید، دو پوشهی bin و obj را مشاهده میکنید. در این مطلب، اهمیت و تفاوت این دو پوشه را بررسی میکنیم. این پوشهها حاوی کدهای کامپایل شدهی IL میباشند. فرآیند کامپایل به دو مرحلهی کامپایل سورس کد و همچنین ایجاد پیوند (linking) بین فایلهای کامپایل شده تقسیم میشود. به دیاگرام زیر دقت نمائید: • در مرحلهی کامپایل، هر یک از سورس فایلها، بصورت مجزا ک ...
تعریف اصلاح کننده دسترسی داخلی (Internal Access Modifier)
این اصلاح کننده دسترسی باعث میشود عناصر یک اسمبلی تنها در سطح همان اسمبلی قابل دسترسی باشند. فرض کنید یک class library ای به نام MyLib با کلاسهای Class1 و Class2 داریم. کلیه کلاسهایی که بصورت Internal تعریف شدهاند، تنها میتوانند توسط کلاسهایی که در MyLib هستند مورد استفاده قرار بگیرند. اگر در پروژهای دیگر به کتابخانهی MyLib ارجاعی بدهیم، کلیه کلاسهای Internal آن ...
هدف بررسی کامل مباحث Streaming در دات نت فریمورک میباشد. Stream چیست؟ دنبالهای از بایتها که میتوان آنها را از یک backing store (انبار پشتیبان) خواند یا در آن نوشت. Backing Store یک رسانه ذخیره سازی از جمله Disk-Drive، Memory و Network Location میباشد که به عنوان منبع یا مقصدی برای خواندن و نوشتن بایتها به صورت دنبالهای، میتوان از آن استفاده کرد. زمانی که قرار است داده ذخیره شده به صورت Stream مصرف شو ...
DebuggerStepThroughAttribute ویژگی DebuggerStepThroughAttribute باعث میشود که در زمان دیباگ کردن کد، با کلید F11، متدهایی که این ویژگی را دارند، بدون رفتن به داخل متد (همانند دیباگ با کلید F10 عمل میکند، به جز زمانی که در داخل متد break point گذاشته باشید) ، تنها اجرا میشوند. به مثال زیر توجه کنید: class Program
{
public static void Main(string[] args)
{
DebuggerStep ...
Nullable<T>.GetValueOrDefault Method با استفاده از متد GetValueOrDefault مقدار فعلی یک شیء Nullable و یا مقدار پیش فرض آن را میتوان بدست آورد. این متد از عملگر ?? سریعتر است. float? yourSingle = -1.0f;
Console.WriteLine( yourSingle.GetValueOrDefault() );
yourSingle = null;
Console.WriteLine( yourSingle.GetValueOrDefault() );
// assign different default value
Console.WriteLine( yourSingle.GetValueOrDefault ...
Parallel.For & Parallel.ForEach Parallel.For – اجرای یک حلقه for که در آن عملیات تکرار ممکن است به صورت موازی انجام شود. var nums = Enumerable.Range( 0, 1000000 ).ToArray();
long total = 0;
// Use type parameter to make subtotal a long, not an int
Parallel.For< long >( 0, nums.Length, () => 0,
( j, loop, subtotal ) =>
{
...
__arglist __reftype __makeref __refvalue کلمات کلیدی در حالیکه، ویرایشگر Visual Studio این کلمات را به صورت رنگی و جزء کلمات کلیدی نمایش میدهد، ولی به دلیل عدم وجود مستندات برای این کلمات کلیدی، برای استفاده از آنها باید مراقب باشید؛ چرا که ممکن است به اندازه کافی تست نشده باشند. شما میتوانید با استفاده از کلمه کلیدی makeref__ یک TypeReference را از یک متغیر، ایجاد کنید. با استفاده از کلمه کلیدی reftype__ میتوانید نوع ...
Curry and Partial methods Curry – در ریاضیات و علوم کامپیوتر، currying روشی است برای ترجمه تابعی که آرگومانهای متعددی میگیرد و به صورت ارزیابی دنبالهایاست از توابع که هر کدام یک آرگومان دارند. برای پیاده سازی آن در #C، از extension methods استفاده میکنیم. public static class CurryMethodExtensions
{
public static Func< A, Func< B, Func< C, R > > > Curry< A, B, C, R >( this Func< A, ...
ObsoleteAttribute ObsoleteAttribute بر روی تمامی عناصر یک برنامه بجز assemblies, modules، پارامترها و مقادیر بازگشتی قابل استفاده است. علامتگذاری یک عنصر به عنوان منسوخ شده، به کاربر استفاده کننده اطلاع میدهد که این عنصر در نسخههای آینده حذف خواهد شد. با استفاده از پروپرتی Message آن پیامی را به کاربر استفاده کننده نشان خواهد داد و توصیه میشود در این پیام یک راه حل نیز ارائه شود. پروپرتی IsError در صورتی که مقدار آن به true ...