C# 6.0: Expression-bodied function members [2/10]

Expression-syntaxi s „lambda-šipkou“, kterou známe již z běžného kódu u lambda výrazů, je nyní možné ji použít i pro zápis těla metody, getteru nebo obdobné situace (např. operátoru).

Použití pro metody, operátory a typové konverze

public Point Move(int dx, int dy) => new Point(x + dx, y + dy);
public static Complex operator +(Complex a, Complex b) => a.Add(b);
public static implicit operator string(Person p) => p.First + " " + p.Last;

Výsledek je stejný, jako by metoda měla klasické tělo s blokem a v něm samotný return příkaz.

Syntaxi lze použít, o pokud metoda „vrací“ void, nebo u asynchronních metod vracejících Task, stejně jako u lambda-výrazů:

public void Print() => Console.WriteLine(First + " " + Last);

Použití pro getter property a indexer

Syntaxi lze použít i pro zkrácený zápis getteru property (property pak nemůže mít setter), nebo pro indexer:

public string Name => First + " " + Last;
public Customer this[long id] => store.LookupCustomer(id);

Série článků o novinkách v C# 6.0:

  1. Auto-property initializers a getter-only (read-only) auto-properties
  2. Expression-bodied function members
  3. Using static
  4. Null-conditional operators (?., ?[], …)
  5. String inerpolation – zkrácený String.Format()
  6. nameof() expressions
  7. Index initializers – přehlednější inicializace slovníků
  8. Exception filters, await v catch/finally blocích
  9. Konstruktor struct bez parametrů
  10. Ostatní (extension-Add v initializers, overload resolution)

9 thoughts on “C# 6.0: Expression-bodied function members [2/10]

  1. Pingback: C# 6.0: Auto-property initializers a getter-only (read-only) auto-properties [1/10] | HAVIT Knowledge Base

  2. Pingback: C# 6.0: Null-conditional operators .? [4/10] | HAVIT Knowledge Base

  3. Pingback: C# 6.0: Using static [3/10] | HAVIT Knowledge Base

  4. Pingback: C# 6.0: String interpolation – zkrácený String.Format() [5/10] | HAVIT Knowledge Base

  5. Pingback: C# 6.0: nameof() expressions [6/10] | HAVIT Knowledge Base

  6. Pingback: C# 6.0: Index initializers – přehlednější inicializace slovníků [7/10] | HAVIT Knowledge Base

  7. Pingback: C# 6.0: Exception filters, await v catch/finally bloku | HAVIT Knowledge Base

  8. Pingback: C# 6.0: Konstruktor struct bez parametrů | HAVIT Knowledge Base

  9. Pingback: C# 6.0: Ostatní (extension-Add v initializers, overload resolution) [10/10] | HAVIT Knowledge Base

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s