VB and C# Interoperability and the Future of VB
53.1 Mixing VB and C#
A solution can contain VB and C# projects that reference each other (but not mixed languages within one project).
Common pattern: a C# UI (ASP.NET Core, Blazor, MAUI) plus VB class libraries for business logic, or a gradual migration project by project.
Conversion tools: ICSharpCode CodeConverter (VB ↔ C#, a Visual Studio extension and website), Telerik Code Converter.
53.2 C# Features VB Can't Author (and Sometimes Can't Consume)
init accessors Consume (16.9), can't declare Consume as classes; no With expressions or record syntax Nullable reference types Not supported (annotations ignored) Pattern matching, switch expressions ref struct / Span(Of T)
Limited consumption; can't declare ref structs Default interface members Consume; can't declare IAsyncEnumerable / await foreach No syntax (manual enumeration)
Can't author in VB; some generators don't emit VB required members Consume (newer compilers honor them)
Static abstract interface members (generic math) Unsafe code / pointers
53.3 Microsoft's VB Language Strategy
Microsoft's 2020 strategy: VB will be supported on .NET (WinForms, WPF, console, libraries, Worker Services, and ASP.NET Core Web API), with a focus on stability and compatibility. The language won't evolve to match C#. It'll consume important new .NET features where feasible.
VB remains a great choice for maintaining existing applications, Windows desktop apps, Office/VBA developers moving to .NET, and teams that value its readability.
For new cross-platform, mobile, web UI, or game projects, C# is generally recommended, and VB libraries can still be shared.
Check the official .NET blog and docs for the current status of VB support in each .NET release.