Recently i find out, that the following code compiles and works as expected in VS2017. But i can\'t find any topic/documentation on this. So i\'m curious is it legit to use
Yes, it's entirely valid. This uses the pattern matching feature of C# 7, which is available with is expressions and switch/case statements. (The fact that it requires C# 7 is why it isn't working for you in VS2015.) For example:
// Type check, with declaration of new variable
if (o is int i)
{
Console.WriteLine(i * 10);
}
// Simple equality check
if (o is 5) {}
Equality checks like the latter - particularly for null - aren't likely to be very useful for is pattern matching, but are more useful for switch/case:
switch (o)
{
case int i when i > 100000:
Console.WriteLine("Large integer");
break;
case null:
Console.WriteLine("Null value");
break;
case string _:
Console.WriteLine("It was a string");
break;
default:
Console.WriteLine("Not really sure");
break;
}
For more details of C# 7 features, see the MSDN blog post by Mads Torgersen.