상세 컨텐츠

본문 제목

this... Static Method (this 정적 메소드) - C# & .NET

본문

제가 아주 즐겨 쓰는 기능입니다.  잘 쓰면 코딩이 아주 편리해 지죠. 
 
this를 이용하여 static 메서드를 쓸 수 있습니다.  만약에 내가 byte 타입의 변수에 파일을 생성하는 코드를 자주 쓴다고 하면 일일이 매번 컨버젼 코드를 쓸 필요 없이 byte 타입의 정적 메서드를 만들어 주면 하나의 코드로 관리를 할 수 있는 거죠.  코드 쓰는 시간도 절약이 되고요.  쉽게 말하면 예를 들어 프로젝트 내의 전 byte 타입에 .ToFile() 이라는 나만의 메서드를 붙일 수 있다는 뜻입니다.
 

반응형

 
위의 예제로 코드를 보여드리겠습니다.


이 메서드를 안 쓰면 항상 이렇게 함수를 만들어서 매번 불러와야 하죠.

public async Task WriteFileAsync(byte[] bytes, string filePath, string fileName)
{
    string destFullName = Path.Combine(filePath, fileName);
    
    // 이미 파일이 있으면 지우기
    if (File.Exists(destFullName))
        File.Delete(destFullName);

    await using FileStream fs = 
    	new FileStream(
            destFullName, 
            FileMode.CreateNew,
            FileAccess.Write);
            
    await fs.WriteAsync(bytes, 0, bytes.Length);

    return;
}

 

728x90

this를 이용하면 이렇게 바뀝니다.  Static 메서드가 되는 거죠.  왜냐하면 변수뒤에 .WriteToFileAsync() 라고 붙여져야 하니 Instantiation을 할 수가 없게 되죠.

public static async Task WriteToFileAsync(this byte[] bytes, string filePath, string fileName)
{
    string destFullName = Path.Combine(filePath, fileName);
    
    // 이미 파일이 있으면 지우기
    if (File.Exists(destFullName))
        File.Delete(destFullName);

    await using FileStream fs = 
    	new FileStream(
            destFullName, 
            FileMode.CreateNew,
            FileAccess.Write);
            
    await fs.WriteAsync(bytes, 0, bytes.Length);

    return;
}

어떻게 사용이 될까요? 아래의 예제와 같이 사용이 편리하게 됩니다.

byte[] imageBytes = GetImageFromDatabase();
string filePath = @"C:\path\";
string fileName = "image.jpeg";

await imageBytes.WriteToFileAsync(filePath, fileName);

아주 간단한 예제이지만 잘 활용한다면 아주 크게 도움이 됩니다.


수고하셨습니다.  즐거운 코딩되세요!


도움이 되셨거나 즐거우셨다면 아래의 ❤️공감버튼이나 구독버튼을 눌러 주세요~  감사합니다

 

 

728x90
반응형

관련글 더보기