본문 바로가기
3.2 .net/C#

[C#] using에 대해서

by Dohi._. 2024. 10. 21.
728x90

using은 주로 import할때 사용하는 C#의 키워드입니다.

using은 두 가지 주요 용도로 사용됩니다: 네임스페이스 임포트자원 관리입니다

 

이번 포스팅에는 직접 해볼 수 있도록 링크도 남겨드리겠습니다.

 

1. 네임스페이스 임포트

using System;

class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

 

 

2. 별칭  [mycompiler.io]

using System;
using sc = System.Console;

class Program {
     public static void Main(string[] args) 
     {
             sc.WriteLine("Hello, World!"); // 별칭을 사용하여 WriteLine 호출
     }
}

 

하지만 별칭은 메서드를 포함하여 정의 할 수 없습니다.

using은 일반적으로 타입 ,클래스, 인터페이스, 또는 네임스페이스에 대해 별칭을 정의하는 데 사용되며, 메서드에 대해 직접 별칭을 정의할 수는 없습니다.

 

별칭 응용[mycompiler.io]

using Point = System.ValueTuple<int, int>;

class Program
{
    static void Main(string[] args)
    {
        Point myPoint = (5, 10);
        System.Console.WriteLine($"X: {myPoint.Item1}, Y: {myPoint.Item2}");
    }
}

 

3. 자원관리

 

Dispose() 메서드는 C#에서 자원을 해제하는 데 사용되는 메서드입니다.

이 메서드는 IDisposable 인터페이스의 일부로, 주로 사용된 자원을 명시적으로 정리하는 역할을 합니다.

주요 의미와 사용 이유

  1. 자원 관리: 파일 핸들, 데이터베이스 연결, 네트워크 연결 등과 같은 비관리 자원(unmanaged resources)을 사용하는 객체는 해당 자원을 명시적으로 해제해야 합니다. Dispose()를 호출하면 이러한 자원을 적절하게 정리할 수 있습니다.
  2. 메모리 누수 방지: 자원을 해제하지 않으면 메모리 누수가 발생할 수 있습니다. Dispose()를 호출함으로써 이러한 문제를 예방할 수 있습니다.
  3. Using 블록과의 통합: C#에서는 using 블록을 사용하여 Dispose() 메서드를 자동으로 호출할 수 있습니다. 블록을 벗어나면 Dispose()가 자동으로 호출되어 자원이 해제됩니다.
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        using (StreamReader reader = new StreamReader("example.txt"))
        {
            string content = reader.ReadToEnd();
            Console.WriteLine(content);
        } // 여기서 reader.Dispose()가 자동으로 호출됨
    }
}

 

 

using을 안사용햇을때 

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        StreamReader reader = new StreamReader("example.txt");
        try
        {
            string content = reader.ReadToEnd();
            Console.WriteLine(content);
        }
        finally
        {
            // Dispose를 수동으로 호출하여 자원 해제
            reader.Dispose();
        }
    }
}

 

try 블록 내에서 파일을 읽고, finally 블록에서 reader.Dispose()를 호출하여 자원을 해제합니다.

finally에 하는 이유는 예외가 발생하더라도 Dispose()가 호출되도록 하기위함입니다.

 

즉, using 문을 사용하면 코드가 간결하고 자원 관리가 자동으로 이루어집니다.

728x90

댓글