2011-04-08 2 views

답변

1

그래서 무슨 일이 것은이라고 생각합니다. 이 클래스의 역할은 함수 포인터 (또는 필요한 경우 여러 함수 포인터)로 작동하는 것입니다.

위임자와 함께 작업하는 데 필요한 모든 사항을 지시 할 때 컴파일러에서 새 클래스를 만들어야합니다. 이 클래스를 만들지 만 인스턴스 수준의 메서드와 속성 등 모든 인스턴스의 메서드와 속성이 있습니다.

따라서 정적으로 대리인을 선언하는 것은 무의미합니다 (JaredPar 및 다른 사람들이 지적한 것처럼). 당신은 '모든 배짱이 정적이 아니며 따라서 도달 할 수없는 등의 고정 된 클래스를 제공하라'는 말을합니다.

4

delegate을 선언하면 유형이 선언됩니다. C#의 대표는 static을 만들 수 없습니다. 델리게이트 형식의 변수를 선언하려면 다음과 같이합니다.

public delegate void SomeCoolDelegate(); // declare a type called SomeCoolDelegate 
public static SomeCoolDelegate foo; // declare foo as an object of type SomeCoolDelegate 
+1

이것은 틀립니다. 정적 클래스를 선언 할 수 있으며, 사실 그것은 Extension 메서드를 만드는 데 필요한 하나의 요구 사항입니다. – Tejs

+0

Gabe : 고마워, 어떤 이유로 든 클릭하지 않았습니다. 지금은 바보 같아요 .LOL 해설/알림을 주셔서 감사합니다. – richard

6

위임자에게는 의미가 없습니다. 의미 적으로 말하자면,이 메서드 시그니처의 구현을 절대로 원하지 않는다는 것입니다!

당신은

protected static SomeCoolDelegate SomeMethod { get; set; } 

정적으로 클래스를 표시

, 당신은 당신이 그것을 인스턴스화 싶지 않은 말을하는지 ... 정적으로 구현을 선언 할 수 있습니다. 대리자는 단순히 메서드 서명을 식별하는 방법입니다.

+1

클래스를 정적으로 표시하여이 클래스의 구현을 절대로 원하지 않는다고 말할 수 있습니다. 대리자를 정적으로 표시하여 "이 대리자의 모든 인스턴스를 정적으로 유지하려고합니다"라고 말합니다. – richard

+0

재미있는 질문이지만 메서드 서명 ature는 정적 인 것으로 정의되지 않는다. 입력 변수, 일반 선언 및 출력 유형 만 나는 "정적 방법 만"이라고 말하는 방법이 있다고 생각하지 않습니다. – Tejs

2

대리인을 선언하면 형식이 선언됩니다. static으로 선언 될 인스턴스 메소드 만 포함하는 유형의 경우는 거의 없습니다.

0

델리게이트는 런타임 퍼스펙티브 유형에서 구성원을 포함하는 폴더와 같은 데이터 저장소의 분류 일 뿐이며 유형은 정적이기 때문에 유형을 정적으로 만들지 않습니다. 모든 유형의 구성원은 정적 일 수 있습니다.

C# 개발자가 클래스에 정적 멤버 만 작성하도록 클래스에 정적으로 작성 하겠지만 그 유형이 정적이거나 정적이 아니라는 의미는 아닙니다. 대리인이 정말 당신을 위해 새로운 특수 클래스를 생성하는 컴파일러를 요구하고있다 선언

: 좋아

관련 문제