دوشنبه ۲۷ دی ۱۳۹۵
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 معرفی کلاس Lazy
.NET
تاریخ ثبت:  ۹۰/۸/۶
تعداد نمایش:  ۶۶۷۸
  نویسنده: فرید بکران
 
   ۱۰  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

احتمالا تا به حال این سوال در ذهن شما مطرح شده که آیا امکان دارد که ایجاد یک متغیر را تا زمانی که آن متغیر مورد استفاده قرار گیرد به تعویق اندازیم یا نه. این وضعیت در مواقعی نمود بیشتری پیدا میکند که متغیر یا فعالیت مرتبط با آن به نسبت سنگین باشد. در .net4 این امکان بوسیله کلاسی به نام lazy در فضای نام System ایجاد شده است. متغیری که با استفاده از کلاس مذکور اعلان و تعریف می شود هنگامی بوجود می آید (منظور از بوجود آمدن در این جا این است که به طور واقعی و به اندازه مورد نیاز فضای حافظه دریافت کند یا فعالیت مورد نظر همراه آن اجرا شود) که دسترسی که مقدار آن متغیر انجام شود (lazy<T>.Value) یا متد Lazy<T>.ToString از متغیر مربوطه فراخوانی شود.

مثال زیر نحوه استفاده از این کلاس را مشخص می نماید. برای درک بهتر این مثال نیاز است که مفاهیمی همچون delegate و anonymous function آشنایی داشته باشید.

Lazy<List<string>> processes =
            new Lazy<List<string>>(
                // دلگیت بی نامی که برای ایجاد کردن متغیر مورد نظر ما استفاده می شود.
            () =>
            {
                List<string> processNames = new List<string>();
                foreach (var p in Process.GetProcesses())
                {
                    processNames.Add(p.ProcessName);
                }
                // فرایند ایجاد متغیر مورد نظر ما باید با بازگرداندن این متغیر به متد ایجاد کننده کلاس lazy پایان یابد.
                return processNames;
            });

تکه کد بالا نحوه ایجاد کردن یک شی از کلاس Lazy را نمایش میدهد. کلاس Lazy به صورتی است که باید نوع متغیری را که نیاز به ایجاد دیر هنگام داریم را مشخص کنیم. در اینجا نوع ما لیستی از رشته ها است (List<string>) تابع ایجاد کننده ای که در اینجا استفاده کرده ایم، تابعی را (delegate مربوط به آنرا) که متغیر مورد نظر ما را تولید می کند به عنوان پارامتر دریافت می کند. این تابع باید در نهایت متغیر مورد نظر ما را به عنوان خروجی بازگرداند.

تابع PrintSystemInfo در این برنامه عمل استفاده از متغیر را به صورت ساده انجام می دهد.

این تابع پاراکتر ورودی هم نوع با متغیر تعریف شده ما با استفاده از کلاس Lazy دریافت می کند (Lazy<List<string>> processNames). عمل دسترسی به مقدار متغیر و در نتیجه ایجاد آن متغیر به صورت زیر انجام می گیرد.

 

...
foreach (string p in processNames.Value)
...

در واقع در اولین دسترسی به این متغیر با استفاده از روش بالا متد مربوط به ایجاد آن متغیر اجرا شده و متغیر به صورت واقعی ایجاد می شود.


موفق و پیروز باشید...

فایل ضمیمه مقاله: ConsoleApplication1.rar
  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
فرید بکران
همه مقاله های نوشته شده توسط این کاربر (۴)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۱ از مجموع ۱ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
چرا از این کلاس استفاده کنیم؟ سام ناصری ۱۳۹۰/۸/۹
پاسخ به: چرا از این کلاس استفاده کنیم؟ فرید بکران ۱۳۹۰/۸/۹
پاسخ به: چرا از این کلاس استفاده کنیم؟ سام ناصری ۱۳۹۰/۸/۹
پاسخ به: چرا از این کلاس استفاده کنیم؟ مهران داودی ۱۳۹۱/۱۰/۸
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to