2013-09-24 5 views
-5

What is the difference between a Field and a Property in C#?Prop et sur le terrain?

J'ai lu ce sujet ci-dessus mais il est plein de réponses confuses avec bla bla.

Je veux savoir, en langage clair, ce code sous un champ ou une propriété? . Si c'est un champ, qu'est-ce qu'une propriété? Si c'est une propriété, qu'est-ce qu'un champ?

class Door 
{ 
    public int width { get; set; } 
} 

Merci beaucoup.

+0

C'est une propriété. Si c'était «public int width», ce serait un champ. – Ryan

+1

Les commentaires de la réponse acceptée ne vous aident-ils pas? –

+0

Avez-vous regardé une ressource autre que SO? – pamphlet

Répondre

1

C'est une propriété. C'est le raccourci pour créer une propriété avec un getter, un setter et une variable de support.

class Door 
{ 
    public int width { get; set; } 
} 

La variable de support est anonyme, mais essentiellement le code que le compilateur génère pour cela est la même chose que:

class Door { 

    private int _width; 

    public int width { 
    get { 
     return _width; 
    } 
    set { 
     _width = value; 
    } 
    } 

} 

Un champ est juste une variable publique dans une classe ou une structure, et ressemblerait à ceci:

class Door { 

    public int width; 

} 

Dans ce c Comme le compilateur ne crée pas de code pour gérer le champ, c'est juste une variable simple.

+1

ne voient pas beaucoup de code C# avec des accolades de même ligne. J'aime ça. – Jonesopolis

+0

question pratique: utilisez-vous les champs publics dans des projets concrets? Maintenant, je peux voir des sentiments assez religieux autour de leur interdiction. –

+0

@IlyaIvanov mon professeur a déclaré que les champs sont pour le niveau de la maternelle. dans la vraie vie, vous n'utilisez que des propriétés. –

1

Une propriété est juste une syntaxe permettant de définir des getters et des setters pour un champ.

class Door 
{ 
    public int width { get; set; } 
} 

est similaire à

class Door 
{ 
    private int width; 

    public int getWidth() 
    { 
     return width; 
    } 
    public void setWidth(int i) 
    { 
     width = i; 
    } 
} 
Questions connexes