Подстановочный знак в MS Access является *
, а не %
:
SELECT FirstName, LastName
FROM Customers
WHERE FirstName LIKE 'A*';
У Вас есть он назад. Можно добавить Слона к массиву Животных, потому что это - Животное, и он, как гарантируют, будет иметь все методы, которые Животное обязано иметь. Вы не можете добавить Животное к массиву Слона, потому что это не имеет всех методов, которые Слон обязан иметь.
Статья Wikipedia о ковариантности и контравариантности имеет хорошее объяснение этого:
В системе типов языка программирования оператор от типов до типов является ковариантным, если это сохраняет упорядочивание, ≤, типов, который заказывает типы от более определенных до большего количества универсальных; это - контравариант, если это инвертирует это упорядочивание. Если ни один из них не применяется, оператор является инвариантным. Эти условия прибывают из теории категорий.
Кроме того, Вы сказали, что Слон типа был "больше", и дело обстоит не так. Животное типа "больше" в том смысле, что оно включает более определенные типы, такие как Слон, Жираф и Лев.
Взгляните на этот обзор ковариантности и контравариантности в C# 4.0 и посмотрите, помогает ли это: