web-dev-qa-db-fra.com

Que signifie l'opérateur "=>" dans une propriété en C #?

Que veut dire ce code?

public bool property => method();
36
Sipo

Ceci est une propriété-expression-body, une nouvelle syntaxe pour les propriétés calculées introduite en C # 6, qui vous permet de créer des propriétés calculées de la même manière que vous créeriez une expression lambda. Cette syntaxe est équivalente à

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

Une syntaxe similaire fonctionne également pour les méthodes:

public int TwoTimes(int number) => 2 * number;
49
dasblinkenlight

C'est une propriété de corps d'expression. Voir MSDN par exemple. Ceci est juste un raccourci pour

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

Les fonctions d'expression sont également possibles:

public override string ToString() => string.Format("{0}, {1}", First, Second);
10
stop-cran

Comme certains l'ont mentionné, il s'agit d'une nouvelle fonctionnalité introduite d'abord dans C # 6. Ils ont étendu son utilisation dans C # 7. pour l'utiliser avec les getters et les setters. Vous pouvez également utiliser la syntaxe avec l'expression avec des méthodes comme celle-ci:

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?
9
mshwf

=> utilisé dans la propriété est un expression body. Fondamentalement, une méthode plus courte et plus propre pour écrire une propriété avec seulement getter.

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

Est traduit en

public bool MyProperty => myMethod();

C'est beaucoup plus simple et lisible, mais vous ne pouvez utiliser cet opérateur que depuis C # 6 et ici vous trouverez une documentation spécifique sur le corps de l'expression.

5
Tinwor

C'est l'expression simplification corsée.

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

Référence; https://msdn.Microsoft.com/en-us/magazine/dn802602.aspx

3
Nadeem Khoury