سلام
با اجازه کاربر anvar.net، در یکی از پستها راجب دستور فوق صحبتی شد که من به بعداً پاسش دادم و این هم توضیح.
- - - - - - - - - - - - - - - - - - - - - - - - -
دستور Using بسیار شبیه دستور Dim است.
با این تفاوت که پایان استفاده شی را تایین میکند.
یعنی شی نمونه سازی شده شما با Using با تضمین 100% در هر شرایط در End Using نابود خواهد شد و اشاره گر مربوطه آزاد خواهد شد.
ولی استفاده از Using راه و رسمی دارد!
1- چون Using باید روی اشاره گر شی قفل کند، در نتیجه باید در همان خط اول شی نمونه سازی شود و پر شود و این امر را نمیتوان به خطوط بعد محول کرد و اصلاً اشاره گر شی در بدنه Using در حالت ReadOnly قرار دارد و نمیتوانید چیزی در آن بریزید.!
2- شی مورد نظر باید واسط نابودسازی را همراه داشته باشد (System.IDisposable) یعنی برای هر نوعی که واسط مذکور را شامل نشود نمیتوان از Using استفاده کرد.
فهمیدن آنکه شی مورد نظر واسط مذکور را پیاده سازی کرده یا نه هم بسیار راحت است، کافیست به Object Browse در منوی View مراجعه کنید (دوست قدیمی و قدرتمند شده VB کارها) Object Browse تمام اطلاعات یک کلاسس را به واضحی و دقت تمام در اختیارتان قرار میدهد و البته راه دیگری هم دارد، کافیست دستور Using را برای نوع مربوطه تایپ کنید، اگر نوع مربوطه واسط نابودسازی را پیاده سازی نکرده باشد، ویرایشگر قدرتمند VB.Net این امر را تشخیص میدهد و زیر دستوراتتان خطی میکشد، طوری که انگار دستورتان غلط املایی دارد!
طبق دو قانون فوق کدهای زیر ایراد دارند!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و کد صحیح اینها هستند
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
باید توجه داشته باشید که هیچ چیز نمیتواند مانع اجرای End Using شود چه خطا و چه خروج نابهنگام
مثلاً در کد زیر هم باز End Using اجرا میشود!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در نتیجه اگر کسی کد زیر را بنویسید، گرچه از نظر دستوری صحیح است و قاعدتاً ایرادی ندارد ولی بسیار خنده دار و مسخره خواهد بود!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده از Using به جای Dim عادت بسیار پسندیده ای است و به شدت مورد سفارش مایکروسافت است
میتوان دو کد زیر را معادل دانست، گرچه کاملاً معادل نیستند ولی بسیار شبیه هم عمل خواهند کرد و فقط در یک تک مورد جزئی تفاوت دارند.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
امیدوارم توانسته باشم کار و هدف کلمه کلیدی فوق را خوب توضیح داده باشم و در آخر تمام موارد فوق در C#.Net نیز صادق است ولی یک کم تفاوت نوشتاری Syntax وجود دارد.