csharplang/proposals/improved-common-type.md

1.8 KiB

improved common type

  • Proposed
  • Prototype: None
  • Implementation: None
  • Specification: See below

Summary

There is a situation in which the current common-type algorithm results are counter-intuitive, and results in the programmer adding what feels like a redundant cast to the code. With this change, an expression such as condition ? 1 : null would result in a value of type int?.

Motivation

This is a common cause of what feels to the programmer like needless boilerplate code.

Detailed design

We modify the specification for finding the best common type of a set of expressions to affect the following situation:

  • If one expression is of a non-nullable value type T and the other is a null literal, the result is of type T?.

This is expected to affect the following aspects of the language:

Drawbacks

There may be some incompatibilities introduced by this proposal.

Alternatives

None.

Unresolved questions

  • What is the severity of incompatibility introduced by this proposal, and how can it be moderated?

Design meetings

None.