2013-03-04 1 views

Répondre

13

Il n'y a pas de différence du tout. Selon the documentation:

Le mot-clé var est facultatif. Cependant, si elle n'est pas utilisée, toutes les déclarations de champ doivent avoir lieu avant toute déclaration de propriété ou de méthode . Après toute déclaration de propriété ou de méthode, le var peut être utilisé pour introduire des déclarations de champ supplémentaires.

+0

« Alors toutes les déclarations sur le terrain doivent avoir lieu avant toute déclaration de propriété ou méthode » ... Je voudrais ajouter « dans le même bloc de visibilité ». – jpfollenius

+0

Je pensais qu'il n'y a pas de différence. –

12

Ils sont tous deux champs avec la même visibilité.

Le mot clé var est parfois nécessaire lorsque vous déclarez des champs après d'autres déclarations (comme des constantes, des types internes ou même après des méthodes et des propriétés).

Par exemple:

type 
    TMyClass = class 
    private 
    FSomeField: string; //<--- this is a field, here you don't need the var clause 
    const 
     SOME_CONSTANT = 1; 
     OTHER_CONSTANT = 2; 
    var //<---- here you need the var clause to start declaring fields 
     FSomeOtherField: string; 
    end; 

Le champ var est nécessaire dans le second cas (FSomeOtherField) de charger le compilateur venir maintenant une série de déclarations de champs, mais dans le premier cas, il n'est pas nécessaire pour des raisons historiques , car dans les premières versions de Delphi, vous pouvez simplement déclarer des champs et il n'y avait pas de support pour les types imbriqués ou les constantes.

+2

"comme des constantes ou des types internes" devrait peut-être lire "comme des méthodes, des propriétés, des constantes ou des types internes". Bien que, en pratique, je n'ai jamais vu de champs * après * méthodes et propriétés ... –

+0

@Andreas belle suggestion, réponse éditée! :) – jachguate

Questions connexes