콘텐츠로 건너뛰기
Home » 무명 형식, 무명 메소드

무명 형식, 무명 메소드

무명 형식, 무명 메소드

무명 형식 (Anonymous Type)

변수 형식(타입)에는 잘 알다시피 int, float, double, string, class … 등등이 있으며, 우리는 이 형식 이름으로 변수를 선언해서 사용한다.

int A;
float B;
string C;
class D;

그런데 C#에는 독특하게 이름이 없는 형식(타입)이 존재합니다.

이를 무명형식 (Anonymous Type)이라고 합니다.

무명형식은 임시 변수가 필요할때 아주 유용합니다.

(임시 변수 : 임시로 생성해서 사용후, 재사용되지 않는 변수)

선언하는 방법은 다음과 같다.

var temp = new { Age = 40, Name = "TAEK" };
Console.WriteLine("{0},{1}", temp.Age, temp.Name);

무명형식은 반드시 선언과 함께 new 키워드로 인스턴스를 생성해주어야 하며, 생성된 인스턴스는 읽기 전용이기 때문에 값 변경이 불가능합니다.

그럼 간단한 예제를 작성해 봅시다.

class MainApp {
    static void Main(string[] args) {
        var temp = new {
            Age = 40,
            Name = "TAEK"
        };
        Console.WriteLine("{0},{1}", temp.Age, temp.Name);
        var tempArr = new {
            Int = new int[]{
                1,
                2,
                3,
                4,
                5
            },
            Float = new float[]{
                0.1 f,
                0.2 f,
                0.3 f,
                0.4 f,
                0.5 f
            }
        };
        foreach(var element in tempArr.Int) {
            console.Write("{0} ", element); // 1,2,3,4,5
        }
        console.WriteLine();
        foreach(var element in tempArr.Float) {
            console.Write("{0} ", element); // 0.1,0.2,0.3,0.4,0.5
        }
        console.WriteLine();
    }
}

무명 메소드 (Anonymous Method)

모든 메소드는 이름을 가진다.

메소드가 매개변수나 반환값은 없을수 잇지만 이름이 없을 수는 없다.

당연한 말이지만 이름이 잇어야 그 메소드를 호출할 수 있기 때문이다.

하지만 C#은 이름이 없는 무명 메소드를 제공한다.

(무명 메소드는 델리게이트와 함께 사용되기 때문에, 델리게이트를 공부하길 바랍니다.)

무명 메소드는 이름이 없기 때문에 메소드를 호출하기 위해서 델리게이트 변수가 필요합니다.

즉 델리게이트 변수를 선언하고, 그 변수로 무명 메소드를 참조하게 하는 것이다.

(델리게이트와 무명 메소드는 당연히 같은 형식이어야 한다.)

// 델리게이트 타입 선언
delegate int MyDelegate(int a, int b);
public static void main() { // 델리게이트 변수 선언
    MyDelegate add;
    // 무명 메소드 참조
    add = delegate(int a, int b) {
        return a + b;
    };
    Console.WriteLine(add(11, 22));
}

델리게이트로 무명메소드를 참조하면 이제 함수내에서 얼마든지 호출해서 쓸수 있다.

무명 메소드는 위와 같이 간단한 연산의 메소드를 임시적으로 써야 할때나 델리게이트를 다른 함수에 넘겨주어 콜백으로 사용할 때에도 유용합니다.

“무명 형식, 무명 메소드”의 1개의 댓글

  1. I simply could not go away your web site prior to suggesting that I really enjoyed the standard info a person supply on your guests? Is going to be back incessantly to investigate cross-check new posts.

댓글 남기기