У меня есть класс с двумя типичными параметрами. Я хочу ограничить второй общий параметр другим типом, чем первый. Есть ли способ сделать такое ограничение во время компиляции? Проверка типов во время выполнения не очень полезна.Общие параметры: обеспечить различные типы
public class Test<A, B>
where B : not_typeof(A)
{
// ...
}
В самом деле, это немного другой сценарий, но в конечном счете это тот же ответ, как один @ Сэм ссылки на –
Есть ли у вас другие ограничения? Потому что, когда у вас есть 'где A: IUtensil', где B: IVehicle', почему вас это волнует, если у пользователя есть« Test »? Он должен работать ... Не могли бы вы добавить некоторые подробности? –
Kobi
Вы не можете написать ограничение, подобное этому, но, конечно, вы можете использовать другие ограничения, которые гарантируют, что типы не могут быть одинаковыми, например, если 'A' должен выводиться из класса' Animal' и 'B' должен происходить из класса «Велосипед», и если ни один из этих двух классов не вытекает из другого, тогда вы будете знать, что «A» и «B» не могут быть одного типа, например, подсказки @Kobi. Точно так же, если у вас есть ограничение 'struct' (тип с нечетным значением), а у другого есть ограничение' class' (ссылочный тип). –