Tato úprava jazyka není součástí C# 6.0 RTM, byla odstaněna.
C# 5.0 nedovoluje vytvořit na struct explicitní constructor bez parametrů, hodnoty fieldů jsou totiž automaticky inicializovány svými default(T) hodnotami. C# 6.0 toto omezení odstraňuje:
struct Person { public string Name { get; } public int Age { get; } public Person(string name, int age) { Name = name; Age = age; } public Person() : this("Jane Doe", 37) { } }
Důležitým omezením však je, že takový konstruktor se použije pouze v případě explicitního volání new Person(), zatímco default(Person) stále založí výchozí hodnoty fieldů, stejnětak vytvoření pole new Person[..].
Série článků o novinkách v C# 6.0:
- Auto-property initializers a getter-only (read-only) auto-properties
- Expression-bodied function members
- Using static
- Null-conditional operators (?., ?[], …)
- String inerpolation – zkrácený String.Format()
- nameof() expressions
- Index initializers – přehlednější inicializace slovníků
- Exception filters, await v catch/finally blocích
- Konstruktor struct bez parametrů
- Ostatní (extension-Add v initializers, overload resolution)
Pingback: C# 6.0: Null-conditional operators ?. [4/10] | HAVIT Knowledge Base
Pingback: C# 6.0: nameof() expressions [6/10] | HAVIT Knowledge Base
Pingback: C# 6.0: String interpolation – zkrácený String.Format() [5/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Using static [3/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Expression-bodied function members [2/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Auto-property initializers a getter-only (read-only) auto-properties [1/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Ostatní (extension-Add v initializers, overload resolution) [10/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Exception filters, await v catch/finally bloku [8/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Index initializers – přehlednější inicializace slovníků [7/10] | HAVIT Knowledge Base