C# 확장 메서드

기존 클래스에서 상속받아 클래스를 만들거나 기존 클래스를 변경하여 다시 컴파일하지 않고 새로운 기능을 추가할 수 있습니다.

확장 메서드를 구현한 클래스가 같은 네임스페이스에 있어야할 필요는 없습니다. 다른 어셈블리에 존재하더라도 사용할 수 있습니다.

public static class ExtendClass
{
    public static string GetString(this object obj)
    {
        return String.Format("{0}", obj);
    }

    public static int? GetInt(this string str)
    {
        if (string.IsNullOrEmpty(str))
        {
            return null;
        }
        else
        {
            int intValue = 0;
            if (int.TryParse(str, out intValue))
            {
                return intValue;
            }
            else
            {
                return null;
            }

        }
    }
}
확장 메서드의 사용
Visual Studio 에서 확장메서드의 사용

콘솔응용프로그램 프로젝트를 만들고 아래와 같이 테스트 코드를 작성하였습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestExtensionMethods
{
    class Program
    {
        static void Main(string[] args)
        {
            object obj = null;
            string str = null;
            try
            {
                Console.WriteLine("obj.ToString() : " + obj.ToString());  // 오류
            }
            catch(Exception ex)
            {
                Console.WriteLine("obj.ToString() : " + ex.Message);
            }

            try
            {
                Console.WriteLine("obj.GetString() : " + obj.GetString()); // 정상
            }
            catch (Exception ex)
            {
                Console.WriteLine("obj.GetString()" + ex.Message);
            }

            str = null;
            int? n1 = str.GetInt();
            Console.WriteLine("str.GetInt() 의 결과 [{0:n0}]", n1);    // n1 == null

            str = "1";
            n1 = str.GetInt();
            Console.WriteLine("str.GetInt() 의 결과 [{0:n0}]", n1);    // n1 == 1

            Console.ReadLine();
        }
    }

    public static class ExtendClass
    {
        // object 확장 메서드
        public static string GetString(this object obj)
        {
            return String.Format("{0}", obj);
        }
        // string 확장 메서드
        public static int? GetInt(this string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return null;
            }
            else
            {
                int intValue = 0;
                if (int.TryParse(str, out intValue))
                {
                    return intValue;
                }
                else
                {
                    return null;
                }

            }
        }
    }
}

참조

MSDN: 확장 메서드

이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.

This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다