Namespaces ها در سی شارپ

چهارشنبه 29 خرداد 1392

Namespaces ها در سی شارپ <br/> اهداف اين درس به شرح زير مي‌باشد : <br/> آشنايي با Namespaceü در زبان C# <br/> چگونگي استفاده از هدايتگر using (using directive)ü <br/> چگونگيü استفاده از هدايتگر alias (alias directive) <br/> اعضاي يك Namespace چه هستند؟ü

– Namespaces

اهداف اين درس به شرح زير مي‌باشد :
 آشنايي با Namespaceü در زبان C#
 چگونگي استفاده از هدايتگر using (using directive)ü
 چگونگيü استفاده از هدايتگر alias (alias directive)
 اعضاي يك Namespace چه هستند؟ü

اگر به خاطر داشته باشيد، در درس اول، در ابتداي برنامه از using System; استفاده نموديم. با استفاده از اين كد، امكان دسترسي ما به اعضاي Namespace مورد نظر، كه در اينجا System است، فراهم مي‌شد. پس از مطالعه اين درس، مطالب بسياري درباره هدايتگر using فرا خواهيد گرفت.

Namespace ها، المان‌هاي زبان C# هستند كه شما را در سازماندهي كردن برنامه، كمك مي‌كنند. پياده‌سازي Namespace ها در كد برنامه بسيار مفيد است چراكه از ايجاد مشكلات مربوط به استفاده مجدد كد، پيشگيري مي‌نمايد.

چگونگي ايجاد Namespace
به مثال زير توجه نماييد.

مثال 1-6 چگونگي ايجاد يك Namespace را نشان مي‌دهد. در اين مثال ما با قرار دادن كلمه كليدي namespace در جلوي csharp-persian يك Namespace جديد ايجاد نموديم. مثال 2-6، Namespace هاي تودرتو را نشان مي‌دهد.

كد:

Namespace ها اين امكان را فراهم مي‌آورند تا سيستمي جهت سازماندهي كدهاي خود ايجاد نماييد. يك روش مناسب جهت سازماندهي Namespace هاي برنامه، استفاده از يك سيستم سلسله مراتبي است. بدين ترتيب كه Namespace هاي عمومي را در بالاي اين ساختار قرار داده و هر چه در اين ساختار پاين‌تر مي‌آييم، Namespace هاي تخصصي‌تر قرار مي‌گيرند. اين سيستم سلسله مراتبي بوسيله Namespace هاي تودرتو قابل پياده‌سازي هستند. اين پياده‌سازي در مثال 2-6 نشان داده شده است. با قرار دادند كدهاي خود در Namespace هاي فرعي مي‌توانيد كدهاي خود را سازماندهي نماييد.

مثال 3-6 روش ديگر ايجاد Namespace هاي تودرتو را نشان مي‌دهد. همانطور كه در اين مثال مشاهده مي‌نماييد، Namespace تودرتو با قرار دادن عملگر نقطه "." در بين csharp-persian و tutorial ايجاد شده است. اين مثال از نظر كارآيي دقيقاً همانند مثال 2-6 است و از نظر پياده‌سازي آسان‌تر از آن مي‌باشد.

فراخواني اعضاي يكNamespace

مثال 4-6 چگونگي فراخواني اعضاي Namespace نشان مي‌دهد. در ابتداي مثال 4-6، يك Namespace تودرتو اعلان شده است، tutorial درون csharp-persian، كه داراي كلاس myExample1 و متد myPrint1 مي‌باشد. متد Main() اين متد را با نام tutorial.myExample1.myPrint1 فراخواني مي‌نمايد. چون متد Main() و tutorial درون يك Namespace قرار دارند، ديگر نيازي به استفاده از نام csharp-persian غير ضروري است.

در انتهاي مثال 4-6، يك Namespace ديگر بصورت csharp-persian.tutorial آورده شده است. كلاسهاي myExamlpe1 و myExample2 هر دو متعلق به يك Namespace مي‌باشند، هرچند مي‌تواند آنها را مجزا از يكديگر نوشت در حاليكه متعلق به يك Namespace باشند. درون متد Main()، متد myPrint2 بصورت tutorial.myExample2.myPrint2 فراخواني شده است. هرچند كلاس myExample2 خارج از محدوده‌ايست كه متد myPrint2 فراخواني شده است، نيازي به آمردن نام csharp-persian براي اين فراخواني وجود ندارد، زيرا هر دو كلاس متعلق به يك Namespace، يعني csharp-persian هستند.

توجه نماييد كه براي هر يك از كلاسهاي myExample1 و myExample2 نامهاي متفاوتي انتخاب شده است، زيرا هر عضو متعلق به يك Namespace بايد داراي نام يكتايي باشد. براي متدهاي myPrint1 و myPrint2 ، بعلت سادگي در امر يادگيري اين مطلب، نامهاي متفاوتي در نظر گرفته شده است. توجه نماييد كه اين دو متد بعلت اينكه در كلاسهاي متفاوتي قرار دارند، مي‌توان نامهاي يكساني برايشان انتخاب نمود، و در اينصورت هيچگونه تداخلي بين ايندو ايجاد نخواهد شد.

استفاده از هدايتگر using

در صورتيكه مي خواهيد متدهايي را بدون استفاده از نام كامل آنها،‌به همراه نام Namespace، استفاده نماييد، مي‌توانيد از هدايتگر using استفاده نماييد. در مثال 5-6، دوبار از هدايتگر using استفاده شده است. اولين استفاده از اين هدايتگر، using System،‌ دقيقاً مشابه به همان چيزي است كع تا كنون در اين درسها مشاهده نموده‌ايد. با استفاده از اين هدايتگر مي‌توانيد از اعضاي موجود در System، بدون اينكه نياز به تايپ كلمه System در هربار داشته باشيد، استفاده نماييد. در myPrint()، كلاس Console عضوي از System است كه داراي متد WriteLine() مي‌باشد. اگر در ابتداي برنامه از هدايتگر using استفاده نكنيم، بايد براي هر دفعه استفاده از متد WriteLine()، نام كامل آن يعني System.Console.WriteLine() را تايپ نماييم.

به طور مشابه، استفاده از using csharp-persian.tutorial امكان استفاده از اعضاي اين Namespace را، بدون نياز به تايپ نام كامل آنها فراهم مي‌نمايد. چون در ابتداي برنامه از هدايتگر using استفاده نموده‌ايم، در متن برنامه متد myPrint() را بصورت myExample.myPrint() استفاده نموده‌ايم، درصورتيكه از هدايتگر using استفاده نمي‌گرديم براي استفاده از اين متد بايد آنرا بصورت csharp-persian.tutorial.myExample.myPrint() مي‌آورديم.

استفاده از هدايتگر Alias

در برخي موارد ممكن است با Namespace خاصي روبرو شويد كه داراي نامي طولاني است و تمايل داشته باشيد تا نام آنرا كوتاهتر نماييد. اين كار با استفاده از ايجاد استعاره (Alias) امكان‌پذير است. همانطور كه در مثال 6-6 ملاحظه مي‌نماييد، با استفاده از
csTut = csharp-persian.tutorial.myExample يك استعاره توليد كرده‌ايم و در متن برنامه به جاي استفاده از نام طولاني csharp-persian.tutorial.myExample از نام مستعار آن يعني csTut استفاده نموده‌ايم. حال از اين نام مستعار در هر جاي برنامه مي‌توان استفاده كرد. ما در اين برنامه در متد Main() استفاده نموده‌ايم.

همچنين در متد Main()، فراخواني از متد myPrint() مربوط به كلاس AliasDirective صورت گرفته است. نام اين متد همانند myPrint() موجود در myExample است. علت اينكه مي‌توان هر دو اين متدها را همزمان فراخواني كرد، استفاده از هدايتگر alias براي متد myPrint() مربوط به كلاس myExample است. (csTut.myPrint()) استفاده از اين روش باعث مي‌شود تا كامپايلر دريابد كه كدام متد را بايد اجرا نمايد. در صورتيكه به اشتباه از هدايتگر alias (csTut.myPrint()) استفاده نكنيم، كامپايلر به اشتباه متد myPrint() مربوط به كلاس AliasDirective را دوبار اجرا خواهد كرد.

تا اينجا،‌ما تنها كلاسها را در Namespace ها نشان داديم. Namespace ها انواع ديگري را نيز مي‌توانند در خود داشته باشند كه در زير مشاهده مي‌نماييد :
Classes
Structures
Interfaces
Enumerations
Delegates
خلاصه
در اين درس با Namespace آشنا شديد و فراگرفتيد كه چگونه Namespace خود را اعلان نماييد. اگر نخواهيد در هربار استفاده از متدها يا اعضاي يك Namespace، نام كامل آنها را استفاده كنيد، بايد از هدايتگر using استفاده نماييد. در صورتيكه بخواهيد بجاي استفاده از نام طولاني يك Namespace، از نامي ك.وتاهتر استفاده كنيد، بايد از هدايتگر استعاره‌اي (Alias Directive) استفاده نماييد.

 

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید