π‘λ€μμ€νμ΄μ€(Namespace)λ ν΄λμ€, μΈν°νμ΄μ€, λ©μλ λ±μ μ΄λ¦ μΆ©λμ λ°©μ§νκ³ μ½λλ₯Ό 체κ³μ μΌλ‘ μ 리ν μ μλλ‘ λμμ£Όλ κ°λ μ λλ€.
μ½κ² λ§ν΄, μ΄λ¦μ΄ κ°μ ν΄λμ€λ λ©μλκ° μμ λ ꡬλΆν μ μλλ‘ νλ 'μ΄λ¦ 곡κ°'μ λλ€.
λ€μμ€νμ΄μ€μ μν
- μ΄λ¦ μΆ©λ(Name Collision) λ°©μ§
- μ¬λ¬ κ°λ°μκ° κ°μ μ΄λ¦μ ν΄λμ€λ₯Ό λ§λ€λλΌλ, λ€μμ€νμ΄μ€λ₯Ό λ€λ₯΄κ² νλ©΄ μΆ©λμ΄ λ°μνμ§ μμ΅λλ€.
- μ½λ κ΄λ¦¬ λ° κ°λ
μ± ν₯μ
- κ΄λ ¨λ ν΄λμ€λ λ©μλλ₯Ό κ·Έλ£Ήννμ¬ μ½λλ₯Ό 체κ³μ μΌλ‘ κ΄λ¦¬ν μ μμ΅λλ€.
- λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬μμ νμμ
- C#μμ μ¬μ©νλ λ€μν λΌμ΄λΈλ¬λ¦¬(System, System.Collections λ±)λ λ€μμ€νμ΄μ€λ₯Ό μ΄μ©ν΄ κ΄λ¦¬λ©λλ€.
λ€μμ€νμ΄μ€ μμ
λ€μμ CompanyAμ CompanyBμμ κ°μ μ΄λ¦μ Employee ν΄λμ€λ₯Ό λ§λ€μμ λ, λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμ¬ μΆ©λμ λ°©μ§νλ μμ μ λλ€.
λ€μμ€νμ΄μ€ μμ΄ κ°μ μ΄λ¦μ ν΄λμ€κ° μμ κ²½μ°
class Employee
{
public void PrintInfo()
{
Console.WriteLine("νμ¬ Aμ μ§μμ
λλ€.");
}
}
class Employee // μ€λ₯ λ°μ! ν΄λμ€ μ΄λ¦μ΄ μ€λ³΅λ¨
{
public void PrintInfo()
{
Console.WriteLine("νμ¬ Bμ μ§μμ
λλ€.");
}
}
λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμ¬ μΆ©λ λ°©μ§
using System;
namespace CompanyA
{
class Employee
{
public void PrintInfo()
{
Console.WriteLine("νμ¬ Aμ μ§μμ
λλ€.");
}
}
}
namespace CompanyB
{
class Employee
{
public void PrintInfo()
{
Console.WriteLine("νμ¬ Bμ μ§μμ
λλ€.");
}
}
}
class Program
{
static void Main()
{
// λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμ¬ ν΄λμ€ κ΅¬λΆ
CompanyA.Employee empA = new CompanyA.Employee();
CompanyB.Employee empB = new CompanyB.Employee();
empA.PrintInfo(); // μΆλ ₯: νμ¬ Aμ μ§μμ
λλ€.
empB.PrintInfo(); // μΆλ ₯: νμ¬ Bμ μ§μμ
λλ€.
}
}
using ν€μλλ₯Ό νμ©ν λ€μμ€νμ΄μ€ λ¨μΆ
μ½λμμ λ€μμ€νμ΄μ€λ₯Ό λ§€λ² μ λ ₯νλ κ²μ΄ λ²κ±°λ‘μΈ κ²½μ°, using ν€μλλ₯Ό νμ©νμ¬ μ½λ κ°λ μ±μ λμΌ μ μμ΅λλ€.
using System;
using A = CompanyA.Employee;
using B = CompanyB.Employee;
class Program
{
static void Main()
{
A empA = new A();
B empB = new B();
empA.PrintInfo();
empB.PrintInfo();
}
}
μ μ½λμμλ CompanyA.Employeeμ CompanyB.Employee μ€ μ΄λ€ κ²μ μ¬μ©ν μ§ μ μ μκΈ° λλ¬Έμ μ»΄νμΌ μ€λ₯κ° λ°μν©λλ€.
βοΈ μ΄λ΄ λλ using ν€μλλ₯Ό μ¬μ©νλ, ν΄λμ€ μ΄λ¦μ΄ κ²ΉμΉ κ²½μ° μ§μ λ€μμ€νμ΄μ€λ₯Ό λͺ μν΄μΌ ν©λλ€.
using System;
using A = CompanyA.Employee;
using B = CompanyB.Employee;
class Program
{
static void Main()
{
A empA = new A();
B empB = new B();
empA.PrintInfo();
empB.PrintInfo();
}
}
Aμ BλΌλ λ³μΉ(Alias)μ μ€μ νμ¬, μ½λλ₯Ό κ°κ²°νκ² μ μ§νλ©΄μ λ€μμ€νμ΄μ€λ₯Ό λͺ ννκ² μ§μ ν μ μμ΅λλ€.
λ€μμ€νμ΄μ€ μ¬μ© μ¬λ‘
C#μμ μ 곡νλ κΈ°λ³Έ λΌμ΄λΈλ¬λ¦¬λ€λ λ€μμ€νμ΄μ€λ₯Ό νμ©νμ¬ κ΄λ¦¬λ©λλ€.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int>(); // System.Collections.Generic λ€μμ€νμ΄μ€ μ¬μ©
numbers.Add(1);
numbers.Add(2);
Console.WriteLine(numbers.Count); // 2 μΆλ ₯
}
}
βοΈ List<int> ν΄λμ€λ System.Collections.Generic λ€μμ€νμ΄μ€μ ν¬ν¨λμ΄ μκΈ° λλ¬Έμ using System.Collections.Generic;μ μΆκ°ν΄μΌ ν©λλ€.
βοΈ using System;μ κΈ°λ³Έ μ
μΆλ ₯ κΈ°λ₯(Console λ±)μ μ¬μ©νκΈ° μν΄ νμν©λλ€.
λ€μμ€νμ΄μ€(Namespace)μ μλ°μμμ ν¨ν€μ§(Package)μ μ°¨μ΄
λ€μμ€νμ΄μ€κ° C#μμ μ½λμ λ Όλ¦¬μ κ·Έλ£Ήνλ₯Ό λ΄λΉνλ€λ©΄, Javaμμλ ν¨ν€μ§(Package)κ° μ μ¬ν μν μ ν©λλ€. νμ§λ§ λ κ°λ μ λͺ κ°μ§ μ°¨μ΄μ μ΄ μμ΅λλ€.
ν¨ν€μ§(Package)λ? (Java)
β
ν΄λμ€λ₯Ό κ·Έλ£Ήννκ³ , μ€μ νμΌ μμ€ν
(ν΄λ ꡬ쑰)κ³Ό μ°λ
β
package ν€μλλ₯Ό μ¬μ©νμ¬ μ μΈνλ©°, μ κ·Ό μ μ΄(public, private λ±) λ° λ°°ν¬μλ μν₯
β
ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ import λ¬Έμ ν΅ν΄ λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€λ₯Ό λΆλ¬μ¬ μ μμ
package companyA; // ν¨ν€μ§ μ μΈ
public class Employee {
public void printInfo() {
System.out.println("νμ¬ Aμ μ§μμ
λλ€.");
}
}
ν¨ν€μ§λ₯Ό μ μΈνλ©΄, ν΄λΉ ν΄λμ€λ companyA ν΄λ μμ μμΉν΄μΌ νλ©°, λ€λ₯Έ ν¨ν€μ§μμ μ¬μ©νλ €λ©΄ importκ° νμν©λλ€.
λ€μμ€νμ΄μ€(Namespace) vs ν¨ν€μ§(Package) μ°¨μ΄μ
κ΅¬λΆ | λ€μμ€νμ΄μ€ (C#) | ν¨ν€μ§ (Java) |
μν | μ½λ λ΄λΆμμ μ΄λ¦ μΆ©λ λ°©μ§ λ° λ Όλ¦¬μ κ·Έλ£Ήν | ν΄λμ€ νμΌμ κ·Έλ£Ήννκ³ μ€μ ν΄λ ꡬ쑰μ μ°λ |
μ¬μ© λ°©λ² | namespace CompanyA { } | package companyA; |
νμΌ μμ€ν κ³Όμ κ΄κ³ | νμΌ μμ€ν κ³Ό μ§μ μ μΈ μ°κ΄ μμ | ν΄λ ꡬ쑰μ μΌμΉν΄μΌ ν¨ |
λ€λ₯Έ μ½λμμ μ¬μ© | using CompanyA; | import companyA.Employee; |
λ°°ν¬μμ μ°κ΄μ± | μ½λ λ΄μμλ§ μν₯ | ν¨ν€μ§ κ²½λ‘κ° ν΄λμ€μ 물리μ μμΉλ₯Ό κ²°μ νλ©°, λ°°ν¬μλ μν₯ |
C#μ λ€μμ€νμ΄μ€λ μ½λ λ΄λΆμμλ§ μ¬μ©λλ©°, νμΌ κ΅¬μ‘°μλ κ΄κ³μμ΄ ν΄λμ€ κ° μ΄λ¦ μΆ©λμ λ°©μ§νκ³ λ Όλ¦¬μ μΈ κ·Έλ£Ήμ νμ±νλ μν μ ν©λλ€. λ°λ©΄, Javaμ ν¨ν€μ§λ ν΄λ ꡬ쑰μ μ§μ μ°κ²°λλ©°, ν΄λμ€μ 물리μ μμΉμ λ°°ν¬μλ μν₯μ λ―ΈμΉλ κ°λ μ λλ€.
μ¦, λ€μμ€νμ΄μ€λ λ Όλ¦¬μ κ΄λ¦¬, ν¨ν€μ§λ 물리μ κ΄λ¦¬μ μ°¨μ΄κ° μλ€κ³ λ³Ό μ μμ΅λλ€.
'νλ‘μ νΈ > c#' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
c#μ΄λ(vistualstudio μ€μΉ λ° .netνλ μμν¬ νλ‘μ νΈ μμνκΈ°) (0) | 2025.03.03 |
---|