"Target-Typed New Expressions"

// Field
Dictionary<string, List<(int Age, string Name)>> _userLookupDict = new(); // No need to re-iterate the type "Dictionary<string, List<(int Age, string Name)>>"!

void Test() {
	// Locals
	List<string> names = new(_userLookupDict.Keys); // Can still pass constructor parameters as usual
	User u = new() { Name = "Ben", Age = 31 }; // Can use object initialization syntax as usual
}


Code snippet taken from "Two Decades of C#: A Reference - C# 9".