Nullable and Pattern Matching
Pattern Is
An is pattern checks a value's shape and creates a typed local variable.
is pattern
An `is` pattern checks a value and extracts a usable variable.
Pattern Is
PatternIs.cs
Replay: real traced execution (multi-file project)
using System;
class Program
{
static void Main()
{
object value = 42;
string result;
if (value is int number)
{
result = "int:" + (number * 2);
}
else
{
result = "other:" + value;
}
Console.WriteLine($"result={result}");
}
}
using System;
class Program
{
static void Main()
{
object value = 7;
string result;
if (value is int number)
{
result = "int:" + (number * 2);
}
else
{
result = "other:" + value;
}
Console.WriteLine($"result={result}");
}
}
using System;
class Program
{
static void Main()
{
object value = "text";
string result;
if (value is int number)
{
result = "int:" + (number * 2);
}
else
{
result = "other:" + value;
}
Console.WriteLine($"result={result}");
}
}
value ← 42
4{5 static void Main()6 {7 object value→ 42 = 42; //@value=7, "text"8 string result;result ← int:84
10if (value42 is int number)11{12 result→ int:84 = "int:" + (number42 * 2);13}Console.WriteLine($"result={result}");
19 Console.WriteLine($"result={resultint:84}");20}outputresult=int:84
value ← 7
4{5 static void Main()6 {7 object value→ 7 = 7;8 string result;result ← int:14
10if (value7 is int number)11{12 result→ int:14 = "int:" + (number7 * 2);13}Console.WriteLine($"result={result}");
19 Console.WriteLine($"result={resultint:14}");20}outputresult=int:14
value ← text
4{5 static void Main()6 {7 object value→ text = "text";8 string result;result ← other:text
13}14else15{16 result→ other:text = "other:" + valuetext;17}Console.WriteLine($"result={result}");
19 Console.WriteLine($"result={resultother:text}");20}outputresult=other:text