๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš€ Development/C#

[C#] ๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace) ๋ž€?

by Jay Din 2024. 11. 20.
728x90
๋ฐ˜์‘ํ˜•

๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace) ๋ž€?

C#์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ž€ ์ฝ”๋“œ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ์ด๋ฆ„์˜ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ์ด ์—ฌ๋Ÿฌ ๊ณณ์— ์žˆ์–ด๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace)์˜ ์—ญํ• 

  1. ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์  ๊ทธ๋ฃนํ™”
    • ๊ด€๋ จ๋œ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์„ ํ•˜๋‚˜์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋ฌถ์–ด ์ฝ”๋“œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: System.Collections๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ด€๋ จ ํด๋ž˜์Šค๋“ค์„ ๊ทธ๋ฃนํ™”
  2. ํด๋ž˜์Šค ์ด๋ฆ„ ์ถฉ๋Œ ๋ฐฉ์ง€
    • ๋™์ผํ•œ ์ด๋ฆ„์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์กด์žฌํ•ด๋„ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต๋œ ์ด๋ฆ„์˜ ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
    • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์•„์ง‘๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋ฉด ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€
    • ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋ฌถ์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace) ์‚ฌ์šฉ ์˜ˆ์ œ

1. ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ

C#์—์„œ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” System์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

using System;

namespace MyApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!"); // System.Console ์‚ฌ์šฉ
        }
    }
}

์‹คํ–‰ํ™”๋ฉด

 

2. ์‚ฌ์šฉ์ž ์ •์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ด ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MathHelper ํด๋ž˜์Šค๋Š” MyCompany.Utilities ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ •์˜๋จ.
  • using ํ‚ค์›Œ๋“œ๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์‰ฝ๊ฒŒ ํ˜ธ์ถœ.
using System;

namespace MyCompany.Utilities
{
    public class MathHelper
    {
        public static int Add(int a, int b) => a + b;
    }
}

namespace MyCompany.Application
{
    using MyCompany.Utilities;

    class Program
    {
        static void Main(string[] args)
        {
            int result = MathHelper.Add(3, 5);
            Console.WriteLine($"Result: {result}");
        }
    }
}

 

3. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ค‘์ฒฉ

์ค‘์ฒฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋” ์„ธ๋ถ„ํ™”๋œ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

namespace MyCompany
{
    namespace Utilities
    {
        public class Logger
        {
            public static void Log(string message)
            {
                Console.WriteLine($"[Log]: {message}");
            }
        }
    }
}

class Program
{
    static void Main()
    {
        MyCompany.Utilities.Logger.Log("Application started.");
    }
}

 

4. ๋ณ„์นญ(alias) ์‚ฌ์šฉ

๊ธด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ„์นญ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

namespace MyCompany.Utilities
{
    public class MathHelper
    {
        public static int Add(int a, int b) => a + b;
    }
}

namespace MyCompany.Application
{
    using MyMath = MyCompany.Utilities.MathHelper;

    class Program
    {
        static void Main()
        {
            int result = MyMath.Add(7, 3);
            Console.WriteLine($"Result: {result}");
        }
    }

}

 

5. ์ด๋ฆ„ ์ถฉ๋Œ ํ•ด๊ฒฐ

๊ฐ™์€ ์ด๋ฆ„์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ์„ ๋•Œ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

namespace LibraryA
{
    public class Helper
    {
        public static void Display() => Console.WriteLine("Helper from LibraryA");
    }
}

namespace LibraryB
{
    public class Helper
    {
        public static void Display() => Console.WriteLine("Helper from LibraryB");
    }
}

class Program
{
    static void Main()
    {
        LibraryA.Helper.Display();
        LibraryB.Helper.Display();
    }
}

 

6. ๊ธ€๋กœ๋ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค

global:: ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ์ƒ์œ„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ž ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

namespace MyCompany
{
    class Program
    {
        static void Main()
        {
            global::System.Console.WriteLine("Hello from global namespace!");
        }
    }
}

 

C#์˜ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค

 

  • System: ํ•ต์‹ฌ ํด๋ž˜์Šค(์˜ˆ: Console, String) ํฌํ•จ.
  • System.Collections.Generic: ์ œ๋„ค๋ฆญ ์ปฌ๋ ‰์…˜(์˜ˆ: List, Dictionary).
  • System.IO: ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ด€๋ จ ํด๋ž˜์Šค(์˜ˆ: Stream, File).
  • System.Linq: LINQ ๊ด€๋ จ ๋ฉ”์„œ๋“œ ๋ฐ ํ™•์žฅ ๋ฉ”์„œ๋“œ.

 

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ค๊ณ„ ๋ฐฉ๋ฒ•

  • ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ์— ๋งž๊ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์ž‘์€ ํ”„๋กœ์ ํŠธ: ๋‹จ์ผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๊ทธ๋ฃนํ™”.
    • ์ค‘๊ฐ„ ๊ทœ๋ชจ: CompanyName.ModuleName.
    • ๋Œ€๊ทœ๋ชจ: CompanyName.Product.Module.SubModule.

์˜ˆ์ œ:

namespace Contoso.ECommerce.OrderProcessing
{
    public class Order
    {
        public int OrderId { get; set; }
        public string CustomerName { get; set; }
    }
}

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์–ด์…ˆ๋ธ”๋ฆฌ

  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ฝ”๋“œ ๊ทธ๋ฃนํ™” ๋‹จ์œ„์ด๊ณ , ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ฝ”๋“œ ๋ฐฐํฌ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์–ด์…ˆ๋ธ”๋ฆฌ์— ๊ฑธ์ณ ์žˆ์„ ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ: System ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” mscorlib.dll, System.dll ๋“ฑ์—์„œ ์ œ๊ณต.

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์žฅ๋‹จ์ 

์žฅ์ :

  • ์ด๋ฆ„ ์ถฉ๋Œ ๋ฐฉ์ง€
  • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ฆ๊ฐ€
  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“ˆํ™”์™€ ํ˜‘์—… ์šฉ์ด

 

๋‹จ์ 

  • ๊ณผ๋„ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์‹œ ๋ณต์žก๋„ ์ฆ๊ฐ€
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ค‘๋ณต ์‹œ ๊ด€๋ฆฌ ์–ด๋ ค์›€
728x90
๋ฐ˜์‘ํ˜•