2012-06-12 2 views
0

저는 C#에서 새로운 기능을하고 PHP에서 왔습니다. 모든 것이 거의 분명합니다. 정확히 어떤 의미인지는 모르겠다. Interface/Collection <>.정확히 C#에서 <>를 의미합니까?

"형식 정의"에 이미 <>을 사용하고 있지만 정확히 무엇을 의미합니까? 나는 이것을 다음과 같이 사용하고있다 :

class TaskComparer : IEqualityComparer<Task> ... 
class TaskQueue : ConcurrentQueue<Task> ... 

등 어떤 기사를 보았습니까? 링크를 게시하십시오. 고맙습니다.

+0

"construction Interface/Collection'<>'"이란 무엇을 의미합니까? 좀 더 구체적으로 예제 코드를 게시 할 수 있습니까? –

+0

나는 그것에 질문을 썼다. – Fanda

답변

5

"제네릭"이라고하며 형식 매개 변수를 정의하는 방법입니다. 다음은 MSDN의 입문 기사입니다. http://msdn.microsoft.com/en-us/library/ms172192.aspx

간단한 유틸리티 예제로 저장소 패턴을 생각해보십시오.

public interface IRepository<T> { 
    public void Add (T obj); 
    public IEnumerable<T> GetAll(); 
} 

올바른 구현으로 모든 유형의 엔티티에 대한 저장소 인터페이스를 가질 수 있습니다.

public void someMethod(IRepository<Person> personsRepo) 
{ 
    IEnumerable<Person> persons = personsRepo.GetAll(); 
    // ... 
} 
2

아마도 대부분 generics을 의미합니다.

2
<

타입 정의>

블록 식별자 후의

식별자는 generic type definition로 구성 형태를 나타낸다.

이이 정의는 재귀입니다 : 당신은 다른 일반적인 유형에서 생성 된 제네릭 형식을 가질 수 있습니다 당신은 배열의 배열을 가질 수 같은 방식으로, 당신은 그래서 사전의 목록의 목록, 목록을 구축하고 있습니다.

또한 제네릭 함수의 이름을 입력하는 형식이나 인터페이스 이름 대신 유사한 구문을 사용하여 일반 함수를 작성할 수 있습니다.

제네릭 형식 및 함수 정의를 직접 빌드하고 리플렉션을 통해 액세스 할 수 있습니다. 이 개념은 다른 유형으로 작성된 유형에 강력한 입력을 확장하기 때문에 매우 강력합니다.

0

컬렉션의 경우 어떤 데이터 형식이 컬렉션 내에 있는지 정의합니다. 유형 보안을 향상시키는 방법 일뿐입니다. 작은 예제 :

ArrayList<Integer> test = new ArrayList<Integer>(); 

test.Add(1); // will work 
test.Add("2"); //will throw an exception, String cannot be cast to int 
+3

이것은 Java 예제이며 최종 행은 예외를 발생시키지 않습니다. 컴파일에 실패합니다. –

+1

비슷한 코드가 주어지면 C#에서도 컴파일이 실패합니다. –

0

다른 사람들이 제공하는 제네릭에 대한 기사를 읽으십시오. 아직도, 나는 당신에게 여기에서 빠른 소개를주고있다.

말하자면, id 함수를 쓰고 싶습니다. 이것은 모든 유형에 맞아야합니다. 맞습니까? 그래서, 우리의 순진한 접근 방식은 object을 사용하고 있습니다 :

object id(object x) { 
    return x 
} 

그러나, 이것이 object 때마다 반환 - 당신과 같이, 당신의 "콘크리트"형식을 다시 얻으려면 나중에 변환 할 수 있습니다 int x = (int)id(12)합니다. Generics가이 문제를 해결합니다.같은T (T를 유형 서명을 보면

T id2<T> (T x) { 
    return x 
} 

, 당신은이 버전 어떤T를 받아 반환 볼 수 있습니다 대체 : 그들은 당신이 정확히 같은 유지하는 유형 변수화 할 수 있도록 int과 함께 표시됨).

빠른 개요를 제공하기를 바랍니다. 또한 제약 조건에 대해 읽어보십시오.

관련 문제