Diciamo che sto lavorando con un oggetto della classe thing
. Il modo in cui sto ricevendo questo oggetto è un po 'prolisso:Questa grande cosa complicata è uguale a questo? o questo? o questo?
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5)
vorrei vedere se questo thing
è pari a x
o y
o z
. Il modo ingenuo scrivere questo potrebbe essere:
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x ||
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == y ||
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == z
In alcune lingue potrei scrivere qualcosa di simile:
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x |= y |= z
ma C# non consente questo.
Esiste un modo C# -idiomatico per scrivere questo test come singola espressione?
Si potrebbe fare qualcosa di simile a 'if (new yourtype [] {x, y, z} .Contains (BigObjectThing.Uncle.PreferredInputStream.NthRelative (5)))' –
@ClaudioRedi, posta come risposta! – Joe
Leggere i commenti sotto uno dovrebbe enfatizzare che '==' è probabile che (a meno che le funzioni non restituiscano realmente refs allo stesso oggetto) sia sovrascritto per fare ciò che si vuole, e sovrascrivere e usare 'Equals' sarebbe probabilmente più idiomatico. –