Do not require type specification for constructors when the type is known.
Imagine this case:
Dictionary<string, List<int>> d = new Dictionary<string, List<int>>();
becomes:
Dictionary<string, List<int>> d = new();
Obviously, constructor arguments and object initialization would be allowed.
This might be a simple optimization given the above example, but there are longer type specifications out there.
But when applied to this:
XmlReader.Create(reader, new XmlReaderSettings{ IgnoreWhitespace = true });
it would become this:
XmlReader.Create(reader, new{ IgnoreWhitespace = true });
which is a lot more readable. In cases like this, the type is not really important, its properties are.
Do not require type specification for constructors when the type is known.
Imagine this case:
becomes:
Obviously, constructor arguments and object initialization would be allowed.
This might be a simple optimization given the above example, but there are longer type specifications out there.
But when applied to this:
it would become this:
which is a lot more readable. In cases like this, the type is not really important, its properties are.