본문 바로가기

프로그램/유니티 C# 강좌

[유니티 C# 강좌] 12. 네임스페이스(Namespaces), using 문

728x90
반응형

프로그래밍을 할 때, 가장 큰 어려움은 겪는 것이 클래스 이름, 함수 이름, 메드 이름, 변수 이름을 정하는 것입니다.

그리고 프로젝트의 규모가 크면 커질수록 각종 이름들의 충돌 발생 가능성이 점점 커지게 됩니다.

이 문제점을 해결해 주는 방법이 네임스페이스입니다.

 

네임스페이스는 클래스들의 묶음입니다.

반대로 클래스들은 네임스페이스를 이용하여 분류를 할 수 있습니다.

 

1. 네임스페이스 선언

 

네임스페이스 선언은 클래스 앞에 "namesapce 네임스페이스명" 선언 후 {}로 묶으면 됩니다.

 

사용 방법 : 네임스페이스
namespace 네임스페이스-이름
{
    class A { }
    class B { }
    ....
}

 

 

네임스페이스는 중첩을 허용합니다.

 

중첩 방법은 첫번째는 네임스페이스를 중첩 선언하는 방법입니다.

 

네임스페이스 중첩1

namesapce 네임스페이스-이름-1 
{
    namesapce 네임스페이스-이름-2 
    {        
        class A { }
        class B { }
        ....
    }
}

 

 

두 번째 방법은 . 키워드를 사용하는 방법입니다. 

 

네임스페이스 중첩2
namesapce 네임스페이스-이름-1.네임스프이스-이름-2
{
    class A { }
    class B { }
    ....
}

 

 

2. 네임스페이스 참조

 

네임스페이스를 사용하기 위해서는 다음 2 가지 방식으로 사용됩니다.

 

2. 1 전체 네임스페이스를 다 적어주는 방식.

 

예제 : 전체 네임스페이스를 다 적어주는 방식

UnityEngine.Debug.Log("네임스페이스 1");

 

 

2. 2 using 지시문을 사용.

 

using 지시문은 선언문에 using 지시문을 선언해줍니다.

 

using 지시문

using UnityEngine;

public class NamespacesExample : MonoBehaviour
{
    void Start()
    {
        Debug.Log("네임스페이스 1");
    }
}

 

 

3. 예제

네임스페이스 선언

using UnityEngine; 

namespace Namespace1 
{ 
    public class NamespaceDefinitionExample 
    { 
        public static void DebugLog(string message) 
        { 
            Debug.Log(message); 
        } 
    } 
}

 

네임스페이스 사용

using UnityEngine; 
using Namespace1; 

public class NamespaceUsageExample : MonoBehaviour 
{ 
    void Start() 
    { 
        NamespaceDefinitionExample.DebugLog("네임스페이스"); 
    } 
}

 

 

4. using 문

 

C#에서 using 키워드는 using 지시문, using 별칭 지시문, using문으로 사용됩니다.

 

4.1 using 지시문

 

지시문에 using 지시문은 네임스페이스 형식 사용 허용에서 사용됩니다.

 

예제 : using 지시문, 네임스페이스

using UnityEngine;

 

 

4.2 using 별명 지시문

 

네임스페이스 또는 형식의 별명을 만드는 데 사용됩니다.

using 지시문을 사용하다 보면, 메서드명이 겹치는 경우가 발생합니다.

이때 using 별명 지시문을 사용하여, 어떤 메드를 사용할지를 정해 줄 수 있습니다.

 

아래 예는 Debug라는 메드가 겹쳐서 using 별명 지시문을 사용합니다.

 

using UnityEngine; 
using System.Diagnostics; 
using Debug = UnityEngine.Debug; 

public class UsingAliasDirectiveExample : MonoBehaviour 
{ 
    void Start() 
    { 
        Debug.Log("UsingAliasDirective"); 
    } 
}

 

하지만, 지시문에 using 별명 지시문을 선언해주면, Debug는 UnityEngine.Debug가 사용됩니다.

 

 

4.3 using 문 

 

using 문은 객체의 범위를 정의할 때 사용됩니다.

이렇게 정의된 객체는 using 문 블록을 벗어나게 되면 자동적으로 Dispose 됩니다.

Dispose는 메모리를 반납하는 메드로 리소드를 정리해 줍니다.

File이나 Database, www 등 관리하기 힘든 리소스들의 관리를 해 줍니다.

 

using System.Collections; 
using UnityEngine; 

public class UsingStatementExample : MonoBehaviour 
{ 
    public string url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg"; 

    IEnumerator Start() 
    { 
        using (WWW www = new WWW(url)) 
        { 
            yield return www; 
            Renderer renderer = GetComponent<Renderer >(); 
            renderer.material.mainTexture = www.texture; 
        } 
    } 
}

 

728x90
반응형