Сегодня на ревью прилетела очередная фабрика животных:
В который раз расстроился, что C# заставляет делать каст объекта Cat к Animal. Но пусть лучше будет каст, ведь через if-else оператор код получается ещё длиннее:
Отвлечёмся на минуту от ревью и попробуем разобраться:
public static class AnimalsFactory
{
public static Animal CreateAnimalByTernaryOperator(bool isCat)
{
return isCat ? (Animal)new Cat() : new Dog();
}
}
В который раз расстроился, что C# заставляет делать каст объекта Cat к Animal. Но пусть лучше будет каст, ведь через if-else оператор код получается ещё длиннее:
public static class AnimalsFactory
{
public static Animal CreateAnimalByIfElseOperator(bool isCat)
{
if (isCat)
return new Cat();
return new Dog();
}
}
Отвлечёмся на минуту от ревью и попробуем разобраться:
- будет ли отличаться IL-код в этих примерах?
- будет ли один из примеров в выигрыше по производительности?