Confusione su Costruttori e proprietà [chiuso]

-3

Quindi sto facendo un progetto con un ragazzo e vedo nel suo codice qualcosa del genere:

  public class Foo()
{
   private string example;

   public String Example
   {
      { get; set; }
   }

   public Foo(string exampleIn)
   {
      Example = exampleIn;
   }
}

e per quanto posso ricordare sono abituato a questo tipo di codice:

  public class Foo()
{

 public Foo(string exampleIn)
   {
      Example = exampleIn;
   }
   public String Example
   {
      { get; set; }
   }


}

senza la parte privata, qual è la differenza tra questi 2 costruttori? Potrei fare il:

public String Example
       {
          { get; set; }
       }

a

 private String Example
       {
          { get; set; }
       }
    
posta Almin Islamovic 16.04.2015 - 14:54
fonte

2 risposte

2

Quello che stai guardando sono Properties , non i costruttori. Il modo in cui l'altra persona li fa:

   private string example;

   public String Example
   {
      { get; set; }
   }

Fammi pensare che potrebbe aver voluto fare qualcosa del genere:

   private string example;

   public String Example
   {
      get {return this.example;}; set {this.example = value;}; 
   }

L'approccio sopra riportato viene solitamente utilizzato quando si desidera eseguire operazioni extra come la convalida sui dati passati e ricevuti dalla classe stessa.

Per rispondere alla tua domanda, public e private sono noti come Access Modifiers ed essenzialmente definire da dove si può accedere a classes , methods e variables . Impostare le proprietà dell'oggetto su private è inusuale dato che impostarle come private le renderà accessibili solo agli elementi all'interno della loro classe e le proprietà dell'oggetto vengono solitamente utilizzate per esporre determinati campi ad altri oggetti, al di fuori della classe.

    
risposta data 16.04.2015 - 15:11
fonte
2

Rendere la tua proprietà private lo nasconderebbe dal resto dell'applicazione. Questo probabilmente non è quello che vuoi.

Il primo esempio di codice specifica un campo di supporto private che non viene mai effettivamente utilizzato. Questo probabilmente non è quello che vuoi.

Il { get; set; } che stai visualizzando è la sintassi per le proprietà implementate automaticamente. Questo è lo zucchero sintattico in C #. Significa che il campo di supporto viene generato automaticamente al momento della compilazione. Quando si utilizzano le proprietà automatiche, non è necessario definire un proprio campo di supporto.

Inoltre, i problemi che hai qui non hanno nulla a che fare con il tuo costruttore.

    
risposta data 16.04.2015 - 15:12
fonte

Leggi altre domande sui tag