인터페이스를 만들 때, 다음 두 코드는 같은 내용입니다.
public interface IBreadShop<T>
public interface IBreadShop<T> where T : class
단, 뒤에 where T : class 구문은 T에 대한 제약조건을 나타냅니다.
그래서, 다음 코드 형태로 T 자리에 모델 클래스가 아닌 기타 모든 타입이 오면 에러가 발생합니다.
예를 들어 다음 코드처럼 T 자리에 struct 타입인 int 등이 오면 에러가 발생합니다.
public class Test : IBreadShop<int> { ... }
결론적으로, IBreadShop of T 형태에서 T는 반드시 클래스여야 한다를 제약 조건으로 주고자 할 때,
where T : class 구문을 덧붙이는거라고 보면 됩니다.
책의 내용과 더불어 추가적인 정보는
Microsoft Docs의 다음 내용도 참고해보세요.
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/where-generic-type-constraint
On 2022-03-17 오후 5:35:00, '최낙훈' wrote:
public interface IBreadShop<T> where T : class
이 내용이 무슨 의미인지 잘 모르겠습니다.
657페이지에 int는 값형식으로 하여 error가 안난다고 하셨는데
759페이에서는 int를 참조형식으로 사용해도 error가 안나더라고요.
둘 다 값을 초기화 안시켰는데 왜 두 개가 다른건가요?