2016-04-18 20 views
6

Stavo guardando biblioteca di qualcuno l'altro giorno e hanno avuto questo:Qual è l'operatore => quando non viene utilizzato con un'espressione lambda?

internal static string BaseUrl => "https://api.stripe.com/v1"; 
public static string Invoices => BaseUrl + "/invoices"; 

Non è la => proprio agire come un incarico = operatore? Non sarebbe lo stesso:

internal static string BaseUrl = "https://api.stripe.com/v1"; 
public static string Invoices = BaseUrl + "/invoices"; 

Mai visto prima.

+0

Un commento ... Hai ragione, il modo in cui biblioteca è codificato, l'operatore di assegnazione sarebbe più appropriato. TUTTAVIA, se la proprietà doveva essere calcolata dinamicamente al volo, non si può semplicemente utilizzare un operatore di assegnazione, ad es. * public static string CurrentDateTimeAsString => DateTime.Now.ToString() * – Colin

+0

Grazie. Ho cercato di trovarlo, ma non sapevo come chiamarlo, quindi non è successo niente. – nhwilly

risposta

7

Questa è una nuova funzionalità di C# 6.0 chiamato Espressione-Bodied, è uno zucchero sintattico che consente di definire le proprietà e gli indicizzatori in cui il corpo del getter è dato dal corpo espressione getter-only.

public static string Invoices => BaseUrl + "/invoices"; 

è la stessa:

public static string Invoices 
{ 
    get 
    { 
     return BaseUrl + "/invoices"; 
    } 
} 

Si può leggere di più here.

Inoltre è possibile definire metodi, come pure con la seguente sintassi:

public void PrintLine(string line) => Console.WriteLine(line);