Is there a shorthand syntax in C# to make this:
if ((x == 1) || (x==2) || (x==5) || (x==13) || (x==14))
... shorter? Something like (hypothetically)
if (x in {1, 2, 5, 13, 14})
I "feel" like it exists, I'm just coming up short mentally and Googly. In reality I have to test a bunch of enums frequently and it's just unreadable. I also hate to make a little helper function if the language supports it already.
Thanks in advance!
Edit
There are clever solutions involving lists... but I was hoping for a pure logical construct of some kind. If it doesn't exist, so be it. Thanks!
Try this:
Though I think the if statement is fine, and making code brief for breifness's sake is useless, here goes:
First approach, assuming you want to go the LINQ route:
Second approach, ArrayList
Third approach, List:
But keep in mind all of these add more overhead (and really don't add much as far as readability, given the performance consideration).
oh, and working example of the above.
I would like to recommend using HashSet(T) Class to check whether the element belongs to the set of elements.
Furthermore, as
HashSet<T>
is an associative container, its lookup complexity is O(1), i.e. constant time: HashSet(Of T).Contains Method, whileArray
andList<T>
has linear time lookup: O(n). So,HashSet<T>
would be the better for lookup.No, there is no support for comparing directly like that. However, you could use LINQ methods such as Contains(). I could provide an example but it sort of depends how the data items are originally stored.
You could perhaps do something like this:
Not tested, but I believe this would work.
edit Looks like a similar response has already been posted.