Ну это все же номинативная по сути типизация. Потому что два одинаковых интерфейса с разным именем — это разные интерфейсы. Хотя да, гибкость, которая из коробки есть в структурных япах, в сишарпе достигается именно интерфейсами
Нет, конечно. Чем меньше притащено в рантайм, тем быстрее всё работает. Да и если вы типы проверили, то зачем вам эта информация в рантайме?
Тащить их всегда — да, наверное не нужно. Но они ведь не только для проверок используются.
Например паттерн матчинг по типам — он же не заработает без метаинформации. Понятно, что компилятор может протащить инфу только для тех типов, на которых используется этот паттерн матичнг, и наверное, это и есть правильный путь
Погоди. Ладно, код бутафорский, и не претендует на качество, но конкретно с фильтром то штука в том, что я получаю из коллекции одного типа коллекцию другого. Ни мап, ни фильтер тут не подойдут (мап не подойдет, потому что количество меняется)
Имел ввиду, что метод как раз не упал — произошёл более плохой вариант, когда у нас сущность не в ту таблицу записалась
type A = B of int | C of int
и собственно вот этот размеченный лейбл и едет в рантайм. И по нему же, наверное, паттерн матчинг и работает
Тащить их всегда — да, наверное не нужно. Но они ведь не только для проверок используются.
Например паттерн матчинг по типам — он же не заработает без метаинформации. Понятно, что компилятор может протащить инфу только для тех типов, на которых используется этот паттерн матичнг, и наверное, это и есть правильный путь