Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# in operator-overloading

I just had an idea last nigth when writing an if-expression and sometimes the expression tend to be long when you have it like this:

if(x == 1 || x == 2 || x == 33 || x == 4 || x == -5 || x == 61) { ... }

x can be enums,strings,ints,chars you get the picture.

I want to know if there are an easier way of writing this. I think of sql's operator 'in' for example as a eay to shorten the expression:

if(x in (1,2,33,4,-5,61)) { ... }

I know you can't write an expression like this with 'in' because the lexer and parser of the compiler won't recognize it.

Perhaps other solutions as extension methods of different types of x is the solution? In the coming .NET 4.0 i heard something about parameterized methods, should that solve the n amount of parameters supplied to the if-expression ?

Perhaps you understand me, have you an idea of a good practice/solution to this question?

/Daniel

like image 591
Daniel Svensson Avatar asked Nov 04 '09 09:11

Daniel Svensson


1 Answers

I usually write an Extension Method as follows:

public static bool In<T>(this T source, params T[] list)
{
  if(null==source) throw new ArgumentNullException("source");
  return list.Contains(source);
}

Which can be used like this:

if(x.In(1,6,9,11))
{
      // do something....
}
like image 119
Winston Smith Avatar answered Sep 20 '22 23:09

Winston Smith