Envoyé par
worm83
Le seul truc qui me fait "tické" est cela car je le trouve "brouillon". Le reste est très intéressante.
1 2 3 4 5 6 7 8 9
|
class Point(private readonly int x, private readonly int y)
{
public int X { get { return x; } }
public int Y { get { return y; } }
} |
Dans ce cas précis ça n'a effectivement pas beaucoup d'intérêt, il serait plus simple de faire ça :
1 2 3 4 5 6 7 8 9
|
class Point(int x, int y)
{
public int X { get; } =x;
public int Y { get; } = y;
} |
Mais il peut y avoir des cas où c'est utile : par exemple si tu ne veux pas exposer le champ via une propriété, ça t'évite de faire un constructeur où tu dois explicitement initialiser le champ.
Envoyé par
Jabbal'H
Une autre chose, mais c'est peut être moi, c'est quoi l’intérêt de çà ?
1 2
|
public int Answer { get; } = 42; |
C'est presque une constante
C'est plutôt comme un champ public readonly en fait ; au niveau de la compilation, ce sera traité comme une propriété et non comme une constante. Surtout, ça permet de modifier l'implémentation plus tard si nécessaire sans changer l'interface publique de la classe : rien ne t'empêche à l'avenir de modifier la propriété pour renvoyer autre chose, et le code qui en dépend ne sera pas impacté.
Envoyé par
Jabbal'H
ou bien cela provient du fait de pouvoir faire çà
1 2 3 4 5 6
|
public class Point(int x, int y)
{
public int X { get; } = x;
public int Y { get; } = y;
} |
Oui, c'est la possibilité d'initialiser une propriété auto et de pouvoir faire une propriété auto en lecture seule.
Envoyé par
Jabbal'H
Pour le reste, de belles évolutions ! Vivement dans 5 ans qu'on puisse l'utiliser en entreprise :d
Pas forcément ; comme je le disais dans la conclusion, même si tu cibles une version plus ancienne de .NET, la plupart de ces fonctionnalités sont quand même utilisables. J'ai testé en compilant pour .NET 2, tout marche sans problème (à part bien sûr ce qui est lié à async/await)
1 |
0 |