// 확장메서드 : 기존 클래스의 외부에서 메서드 추가
using System;
public class Calc
{
    public int Plus(int a, int b)
    {
        return (a + b);
    }
}

public static class CalcExtension    // Calc클래스의 외부에서 Minus메서드 확장 
{
    public static int Minus(this Calc c, int a, int b) // 문법이다. static클래스에 static메서드, 첫번째 매개변수로 this, 두번째 자리에 확장할 클래스(Calc), 세번째 자리에 내가 원하는 변수명
    {
        return (a - b);
    }
}

public class 확장메서드
{
    public static void Main()
    {
        Calc c = new Calc();
        Console.WriteLine(c.Plus(3, 5)); // 8
        Console.WriteLine(c.Minus(3,5)); // -2

        string s = "확장메서드";
        Console.WriteLine("{0}", s.ShowTitle()); // ***확장메서드*** 로 출력시킴
       
        int i = -10;
        Console.WriteLine("절대값 : {0}", i.Abs()); // (메서드)확장
    }

}

// CLR에 이미 만들어져 있는 String 클래스 확장
public static class StringExtension
{
    public static string ShowTitle(this String s)
    {
        return "***" + s + "***";
    }
}

// Int32 구조체에 Abs() 메서드를 추가(확장)
public static class Int32Extension
{
    public static int Abs(this Int32 i)
    {
        return (i < 0) ? -i : i;
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

82. IEnumerable인터페이스  (0) 2009.08.19
81. 람다식  (0) 2009.08.19
(테스트) 학점 계산 프로그램  (0) 2009.08.19
79. 초기화자(Initializer)  (0) 2009.08.18
알고리즘 - 12. 그룹(Group)  (0) 2009.08.18
Posted by holland14
: