C # 제네릭에서는 형식 매개 변수 T
가 기본 생성자를 갖도록 제약 조건을 선언 할 수 있습니다 where T : new()
. 그러나 이와 같은 다른 제약 조건은 유효하지 않습니다 ( new(string)
예 : 등).
언어 설계 및 / 또는 구현 관점에서 그 이유는 무엇입니까?
생성자가 작동하는 방식이나 유형 시스템이 구현되는 방식으로 이것을 금지하거나 최소한 어렵게 만드는 것이 있습니까? 그렇다면 무엇입니까? default(T)
실제로 컴파일되는 어딘가를 읽은 것을 기억 new T()
합니다 T : struct
. 이것과 관련이 있습니까?
아니면 언어를 너무 복잡하게 만들지 않기 위해 단순히 디자인 결정을 내렸습니까?
new(string)
기본 생성자 제약 조건이 아닙니다. "특정 생성자 서명이 필요한 제약 조건이없는 이유는 무엇입니까?" 그러한 제약은 특별히 유용하지 않기 때문에 가능성이 높습니다.