This C# cast returns true if it succeeds. It returns false if the cast fails. This operator can be used to capture a cast variable.
This operator is useful when checking types in if
-statements and expressions. We can use "is" for pattern-matching—it can capture the cast value.
The is
-operator is used to create an expression. It returns a boolean result of true or false. This is compatible with the if
-statement, which requires a boolean context.
is
-operator evaluates the entire class
derivation chain when it is applied. The string
is both an object and string
.if
-statement bodies are reached. Their expressions are evaluated to the true value: the casts succeed.if
-statement body is not fully evaluated. The string
is not a StringBuilder
type.using System; using System.Text; // Create a string variable and cast it to an object. string value1 = "Example"; object value2 = value1; // Apply the is-operator with 3 different parameters. if (value2 is object) { Console.WriteLine("is object"); } if (value2 is string) { Console.WriteLine("is string"); } if (value2 is StringBuilder) { Console.WriteLine("is StringBuilder"); // Not reached. }is object is string
Here we see a separate syntax form for the "is" operator. We have an object, and we want to cast it to a string
. We use pattern matching for this.
is
-cast tests to see if the variable "wrapper" is a string
. If it is a string
, a string
local called temp2 is introduced.is
-cast combines the as
-cast with the is
-cast. This is probably the best way to cast C# variables.string temp = "ancient ship"; object wrapper = temp; // Use pattern matching to cast the object to a variable. // ... Wrapper is an object. // ... Temp2 is a string reference. if (wrapper is string temp2) { System.Console.WriteLine($"STRING = {temp2}, LENGTH = {temp2.Length}"); }STRING = ancient ship, LENGTH = 12
In newer versions of C#, we can use the is
-keyword to perform pattern matching. So we can test the entire contents of a List
with an is
-statement.
List
. It uses the same "is" operator.using System; using System.Collections.Generic; List<int> values = [100, 200, 900]; // The is-keyword matches this list. if (values is [100, 200, 900]) { Console.WriteLine("SAME LIST"); } // This check evaluates to false. if (values is [-100, -1000]) { Console.WriteLine("???"); }SAME LIST
The is
-operator is exception-neutral. It is elegantly used in an if
-statement expression—it is evaluated to a boolean value. We examined the instruction-level code.