Su primera versión ya incluye varios operadores en una expresión. Parece que desea aplicar múltiples operandos ("perro", "gato", "humano") a un único operador (==
en este caso).
Para que ejemplo específico que puede usar:
// Note: could extract this array (or make it a set etc) and reuse the same
// collection each time we evaluate this.
if (new[] { "dog", "cat", "human" }.Contains(foo))
pero no hay una talla única para todos los generales de esta versión para todos los operadores.
EDITAR: Como se menciona en los comentarios, lo anterior no funcionará tan bien como la versión codificada.
Debo señalar, que esto tendrá un desempeño peor que la simple codificación dura de la expresión (pero probablemente más flexible/mantenible) –
@DaveBish: Lo haré, gracias. –
@JonSkeet: gracias. He reformulado mi pregunta. Lo que estoy comparando (perro, gato, humano) es un operando, entonces, ¿qué es "foo"? ¿Operado? – KMC