These were: 1. adding `csharp` as the language identifier. 1. making relative links to content published on docs.microsoft.com 1. small grammar fixes.
1.6 KiB
Expression variables in initializers
Summary
We extend the features introduced in C# 7 to permit expressions containing expression variables (out variable declarations and declaration patterns) in field initializers, property initializers, ctor-initializers, and query clauses.
Motivation
This completes a couple of the rough edges left in the C# language due to lack of time.
Detailed design
We remove the restriction preventing the declaration of expression variables (out variable declarations and declaration patterns) in a ctor-initializer. Such a declared variable is in scope throughout the body of the constructor.
We remove the restriction preventing the declaration of expression variables (out variable declarations and declaration patterns) in a field or property initializer. Such a declared variable is in scope throughout the initializing expression.
We remove the restriction preventing the declaration of expression variables (out variable declarations and declaration patterns) in a query expression clause that is translated into the body of a lambda. Such a declared variable is in scope throughout that expression of the query clause.
Drawbacks
None.
Alternatives
The appropriate scope for expression variables declared in these contexts is not obvious, and deserves further LDM discussion.
Unresolved questions
- What is the appropriate scope for these variables?
Design meetings
None.