¿Qué significa el operador "= > " en una propiedad en C#? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

¿Qué significa este código?

public bool property => method();
 34
Author: Daniel Cassidy, 2016-10-27

6 answers

Esta es una propiedad con cuerpo de expresión, una nueva sintaxis para propiedades calculadas introducida en C# 6, que le permite crear propiedades calculadas de la misma manera que crearía una expresión lambda. Esta sintaxis es equivalente a

public bool property {
    get {
        return method();
    }
}

Una sintaxis similar también funciona para los métodos:

public int TwoTimes(int number) => 2 * number;
 47
Author: dasblinkenlight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-27 10:41:52

Esa es una propiedad de cuerpo de expresión. Véase MSDN por ejemplo. Esto es solo una abreviatura de

public bool property
{
    get
    {
        return method();
    }
}

Las funciones con cuerpo de expresión también son posibles:

public override string ToString() => string.Format("{0}, {1}", First, Second);
 10
Author: stop-cran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-29 17:03:38

Como algunos mencionaron, esta es una nueva característica traída primero a C # 6, extendieron su uso en C # 7.0 para usarla con getters y setters, también puede usar la sintaxis de expresión bodied con métodos como este:

static bool TheUgly(int a, int b)
{
    if (a > b)
        return true;
    else
        return false;
}
static bool TheNormal(int a, int b)
{
    return a > b;
}
static bool TheShort(int a, int b) => a > b; //beautiful, isn't it?
 8
Author: mshwf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-23 07:39:23

=> usado en propiedad es un expression body. Básicamente una forma más corta y limpia de escribir una propiedad con solo getter.

public bool MyProperty {
     get{
         return myMethod();
     }
}

Se traduce a

public bool MyProperty => myMethod();

Es mucho más simple y legible, pero solo puede usar este operador desde C# 6 y aquí encontrará documentación específica sobre el cuerpo de la expresión.

 5
Author: Tinwor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-27 12:40:51

Es la expresión simplificación corporal.

public string Text =>
  $"{TimeStamp}: {Process} - {Config} ({User})";

Referencia; https://msdn.microsoft.com/en-us/magazine/dn802602.aspx

 3
Author: Nadeem Khoury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-27 15:23:02

Que es una propiedad de expresión bodied. Se puede utilizar como una simplificación de getters de propiedades o declaraciones de métodos. Desde C # 7 también se expandió a otros tipos de miembros como constructores, finalizadores, configuradores de propiedades e indexadores.

Consulte la documentación de MSDN para obtener más información.

"Las definiciones del cuerpo de expresión le permiten proporcionar la implementación de un miembro de una forma muy concisa y legible. Puede utilizar una definición de cuerpo de expresión siempre que la lógica para cualquier el miembro soportado, como un método o una propiedad, consiste en una sola expresión."

 -5
Author: Sérgio Azevedo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-24 13:39:37