Eric Potter discusses pattern matching in C#. Pattern matching combines type validation, variable evaluation, and variable assignment. It allows for different program behaviors based on the type of an input variable. Pattern matching can be used instead of switch/case statements or nested if/else blocks when selecting different code paths. Using pattern matching makes code more clear and concise. The presentation provides examples of pattern matching in other languages like F# and Rust and proposes adding it to C# 7.3.