Comment définir correctement les propriétés de classe?

Lors de la définition d'une nouvelle classe à l'intérieur d'un projet, qu'est-ce que la bonne/meilleure pratique pour le faire?
Dans le passé, j'ai créé des classes telles que:

  public class MyClass
  {
      public string FirstName  {get; set;}
      public string LastName  {get; set;}
  }

Normalement, je voudrais utiliser une classe comme cela pour la création de collections au sein d'un projet.

Cependant que je continue à apprendre à lire et à plus sur le c# sharp-je voir des exemples où les classes sont définies comme suit:

    class MyClass //not set to public
    {
        private string  _firstName; //first defined as fields
        private string _lastName;

        public string FirstName  //then defined as properties 
        {
            get { return  _firstName; }
            set { _firstName = value; }
        }
        public string LastName
        {
            get { return _lastName; }
            set { _lastName = value; }
        }
    }

Est la première approche incorrecte dans la définition ou est-ce un acceptées version courte en C#? Comme une meilleure pratique, faut-il toujours d'abord définir la classe avec des champs privés et ensuite de les définir comme des propriétés à l'aide de get /set pour une valeur?

Je demande parce que je suis autodidacte en C# et je suis en train d'améliorer et de mieux comprendre la démarche à adopter pour le développement et certains des didacticiels et des exemples là-bas tout simplement de l'état approches sans une solide explication quant à pourquoi une approche est privilégiée (ou devrait être fait) sur l'autre.

Merci d'avance

source d'informationauteur rlcrews