מבוא למרחבי שמות ב-C#
ב-C#, מרחבי שמות משמשים לארגון ולקיבוץ מחלקות, ממשקים וסוגים אחרים הקשורים לתוכנית. הם מספקים דרך להימנע מהתנגשויות בשמות ויוצרים מבנה לוגי לארגון קוד. בהקדמה זו, נסקור כיצד פועלים מרחבי השמות ב-C# ונבדוק דוגמאות קוד כדי להמחיש את השימוש בהם.
הצהרת מרחב שמות ב-C#
- כדי להגדיר מרחב שמות ב-C#, השתמש במילת המפתח 'namespace' ואחריה בשם מרחב השמות.
- בדרך כלל, מרחבי השמות מוצהרים בתחילת קובץ C#:
namespace MyNamespace
{
// Code goes here...
}
גישה לסוגים במרחב שמות
- לאחר הגדרת מרחב השמות, ניתן לכלול בתוכו את classes וסוגים אחרים.
- כדי לגשת לסוג ממרחב שמות, השתמש בשם הסוג המלא או כלול הוראה 'using' בראש הקובץ:
using System;
namespace MyNamespace
{
class Program
{
static void Main()
{
// Fully qualified name
System.Console.WriteLine("Hello, world!");
// Using directive
Console.WriteLine("Hello, world!");
}
}
}
בדוגמה שלמעלה, נוכל לגשת למחלקה 'Console' ממרחב השמות 'System' על ידי הכשרתו המלאה כ-'System.Console' או על ידי הוספת הנחיה 'using' עבור 'System' בראש הקובץ.
מרחבי שמות מקוננים
אפשר גם לקנן את מרחבי השמות זה בתוך זה כדי ליצור מבנה היררכי, שיכול להיות שימושי לארגון קוד קשור:
namespace OuterNamespace.InnerNamespace
{
class MyClass
{
// Code goes here...
}
}
בדוגמה שלמעלה, יש לנו מרחב שמות חיצוני שנקרא 'OuterNamespace' ומרחב שמות פנימי שנקרא 'InnerNamespace'. class בשם 'MyClass' מוכרז בתוך מרחב השמות הפנימי.
שימוש במרחבי שמות מרובים
כדי להשתמש בסוגים ממרחבי שמות מרובים, אפשר לכלול מספר הנחיות 'using' בראש הקובץ:
using System;
using System.IO;
namespace MyNamespace
{
class Program
{
static void Main()
{
string path = "example.txt";
// Using types from different namespaces
string contents = File.ReadAllText(path);
Console.WriteLine(contents);
}
}
}
בדוגמה שלמעלה, יש לנו הנחיות 'using' עבור שני מרחבי השמות 'System' ו-'System.IO'. זה מאפשר לנו להשתמש בסוגים משני מרחבי השמות, כגון 'File' מ-'System.IO' ו-'Console' מ-'System' *.
סיכום
למרחבי שמות יש תפקיד מכריע בארגון ומבנה קוד ב-C#. הם עוזרים למנוע התנגשויות שמות, משפרים את קריאות הקוד ומקלים על ניהול בסיסי קוד גדולים. על ידי שימוש יעיל במרחבי שמות, ניתן ליצור מבנה קוד נקי ומודולרי.