Mavzu: nomlar fazosi
Download 271.68 Kb.
|
NOMLAR FAZOSI
- Bu sahifa navigatsiya:
- Counter.CountDown cd1 = new Counter.CountDown (10);
- 2. Nomlar fazosii bilan toqnashuvlarning oldini olish.
- System ; // Nom fazosi hisoblagichini elon qiling, namespace Counter
- Counter
csc NSDemo.cs Counter.cs
Ushbu dasturning bir nechta muhim jihatlari diqqat bilan e'tiborga loyiqdir. Birinchidan, CountDown sinfining ob'ektini yaratishda, quyida ko'rsatilgandek, Counter nom fazosi yordamida uning nomini qo'shimcha ravishda belgilashingiz kerak. Axir, CountDown klassi Counter nomlar fazosida e'lon qilinadi. Counter.CountDown cd1 = new Counter.CountDown (10); Ushbu qoidani umumlashtirish mumkin: har doim nom fazosining a'zosi ishlatilsa, uning nomi ushbu nom fazosi yordamida qo'shimcha ravishda aniqlanishi kerak. Aks holda, nom fazosining a'zosi kompilyator tomonidan topilmaydi. Ikkinchidan, Counter turidagi ob'ekt yaratilgandan so'ng, uning nomlarini bo'shliq yordamida qo'shimcha ravishda belgilashga hojat yo'q. Shuning uchun, quyidagi kod satrida bo'lgani kabi, nom fazosini ko'rsatmasdan to'g'ridan-to'g'ri cd1.Count() usulini chaqirish mumkin. i = cd1.Count (); Uchinchidan, misol ravshanligi uchun bu yerda ko'rib chiqilgan dastur ikkita alohida faylga bo'lingan. Bir faylda Counter nom fazosini e'lon qilish uchun kod, ikkinchisida NSDemo dasturining o'zi uchun kod mavjud. Ammo ikkala kod bo'lagi ham bitta faylga birlashtirilishi mumkin edi. Bundan tashqari, bitta manba faylida o'z e'lon maydonlariga ega bo'lgan ikki yoki undan ortiq nom bo'shliqlari bo'lishi mumkin. Ichki nom fazosi tugagandan so'ng, tashqi nom fazosi qayta tiklanadi - Counter misolida bu global nom fazosi. Aniqlik uchun quyidagi misollarda dastur talab qiladigan barcha nomlar bir xil faylda taqdim etiladi. Shunga qaramay, ularni alohida fayllarga tarqatishga ruxsat berilganligini yodda tutish kerak, bu ko'pincha chiqish kodida qo'llaniladi. 2. Nomlar fazosii bilan to'qnashuvlarning oldini olish. Nomlar fazosiining asosiy afzalligi shundaki, ularda e'lon qilingan ismlar ularning tashqarisida e'lon qilingan nomlarga zid kelmaydi. Masalan, quyidagi dastur ikkita nom fazosini belgilaydi. Birinchisi, ilgari kiritilgan Counter nom fazosi, ikkinchisi Counter2. Ikkala nomlar fazosii ham bir xil nomdagi sinflarni o'z ichiga oladi CountDown, lekin ular har xil bo'shliqlar bo'lgani uchun ikkala CountDown sinflari bir-biriga zid kelmaydi. Bundan tashqari, ikkala nom fazosi ham bitta faylda aniqlanadi. Yuqorida aytib o'tilganidek, bu juda yaxshi qabul qilinadi. Albatta, agar zarurat tug'ilsa, ushbu nomlar fazosiining har birini alohida faylga bo'lish mumkin. // Nomlar fazosii nomlarning to'qnashuviga yo'l qo'ymaydi. using System; // Nom fazosi hisoblagichini e'lon qiling, namespace Counter { // Oddiy ayirboshlash hisoblagichi, class CountDown { int val; public CountDown(int n) { val = n; } public void Reset(int n) { val = n; } public int Count() { if(val > 0) return val--; else return 0; } } } // Counter2 nom fazosini e'lon qiling. namespace Counter2 { / * Ushbu sinf CountDown Counter2 nom fazosiga tegishli va shuning uchun Counter nomlar fazosidagi o'xshash sinfga zid kelmaydi. * / class CountDown { public void Count() { Console.WriteLine("Bu Counter2 nom fazosidan Count () usuli."); } } } class NSDemo2 { static void Main() { // Bu Counter nom fazosidan CountDown klassi. Download 271.68 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling