Auto-mise en œuvre des getters et les setters et les passations de champs

Je vois beaucoup d'exemple de code pour les classes C# qui fait cela:

public class Point {
    public int x { get; set; }
    public int y { get; set; }
}

Ou, dans le plus ancien code, le même, avec un explicite privé de la sauvegarde de la valeur et sans les nouvelles propriétés implémentées automatiquement:

public class Point {
    private int _x;
    private int _y;

    public int x {
        get { return _x; }
        set { _x = value; }
    }

    public int y {
        get { return _y; }
        set { _y = value; }
    }
}

Ma question est pourquoi. Est-il une différence fonctionnelle entre le faire ci-dessus et juste pour s'ces membres champs publics, comme ci-dessous?

public class Point {
    public int x;
    public int y;
}

Pour être clair, je comprends la valeur de getters et setters lorsque vous avez besoin de faire de la traduction des données sous-jacentes. Mais dans le cas où vous êtes juste de passage de la valeur au travers, il semble inutilement verbeux.

InformationsquelleAutor tclem | 2008-09-21