en C # Comment une déclaration diffère d'une définition, c'est-à-dire.: p>
en C ++, c'était plutôt évident, mais en C # à partir de ce que je peux dire de la norme ECMA et que MSDN est que tout est une déclaration et où la définition de mot est utilisée, il est utilisé pour signifier la même chose que la déclaration. p>
6 Réponses :
Ce n'est pas parce que c # n'a pas à faire une distinction. P>
Cette distinction n'existe pas. Vous vous référez à la portée d'une déclaration, le point de définition est hors de propos dans la portée de la variable / champ. P> li>
int x; // 'x' is declared x = 10; // 'x' is assigned int y = 20; // 'y' is both declared and assigned
Cela n'a pas beaucoup de sens. Un argument de méthode est déclaré dans la signature de la méthode. P> li>
Je pense que vous êtes un peu confus en ce qui concerne la terminologie des 1 et 3. P> ol>
Eh bien, en C ++: int x = 10; // n'est pas une déclaration et est strictement une définition. C'est pourquoi je suis confondu avec la terminologie C #. De plus, C ++ permet aux déclarations de classe qui sont complètement différentes des définitions de classe. C # permet des classes partielles et des classes complètement définies, mais les deux semblent être des déclarations!
@Michael: Non, les deux sont des définitions.
@Michael: Les classes partielles ne sont qu'une seule classe divisée dans plusieurs fichiers source. Certains membres sont définis dans un seul dossier et certains dans d'autres.
@Michael, je ne peux pas comprendre quelle est la déclaration et quelle est la définition? Je pense en c ++ int x = 10; est la définition et la déclaration. Seriez-vous l'expliquer?
@Henk, non, ce sont des déclarations, voir la section 10.1 (pour une classe complète) et des sections (10.2.4 et 10.2.7) du document standard C # 4.0 pour les classes partielles.
@Michael: Vous avez probablement raison, j'utilisais la nommée C ++. La correction: ils sont tous deux comme i> C ++ définitions.
Permettez-moi de suggérer qu'il est idiot de lire la spécification C ++ afin d'essayer de comprendre la sémantique C #. Il suffit de lire la spécification C #! =)
Après int x; code>, x code> est très bien défini. Il n'est tout simplement pas assigné.
Le modèle de construction C ++ date d'une époque où les noyaux de ferrite étaient un dollar une douzaine. Plusieurs fichiers de code source ont compilé un à la fois. Avec un compilateur à simple passe. Un lieur pour tout coller ensemble. Qui faisait des déclarations séparées dans les fichiers d'en-tête et les prototypes nécessaires. P>
Le compilateur C # est prêt à bénéficier des ressources modernes des machines. Tous les fichiers de code source constituant un assemblage sont compilés en même temps, le compilateur fait au moins deux passes afin qu'il puisse analyser les déclarations avant les organes de la méthode. Il y a toujours un modèle de liaison possible mais il devient très rarement utilisé. P>
Les seules notions d'une déclaration ayant à correspondre à une définition que je peux penser est un type de délégué ayant à correspondre à une méthode cible et à une déclaration d'interface membre qui doit correspondre à sa mise en œuvre concrète. P>
où la définition de mot est utilisée, il est utilisé pour signifier la même chose que la déclaration p>
correct. P>
Le concept d'une «déclaration» en tant que définition douce / avancée est nécessaire dans C et C ++ en raison de leur modèle de compilation. C ++ (conceptuellement) utilise une compilation à passe unique, C # est multi-passe. Considérez: p>
class Bar; // declaration: needed in C++, illegal and unnecessary in C# class Foo // start of definition, counts as a declaration of Foo { Foo f; // use of declared but still incompletely defined class Foo Bar b; // use of declared but still undefined class Bar } class Bar // definition and re-declaration { }
Selon Kernighan & Ritchie dans "Le langage de programmation C": Une "déclaration" annonce les propriétés des variables; Il consiste en un nom et une liste de variables, telles que: int FAHR, Celsius; P>
Selon STROSTRUP dans "Le langage de programmation C ++": Une "déclaration" est une déclaration qui introduit un nom dans le programme. Il spécifie un type pour ce nom. Un type définit la bonne utilisation d'un nom ou d'une expression. P>
aucun livre ne définit spécifiquement "définition". Mais les deux utilisent le terme dans le sens scientifique de la valeur d'une variable. Ainsi, une déclaration de fonction déclare la signature d'appel de la fonction. Une définition de fonction contient le code réel. P>
La nécessité d'avoir des significations distinctes dans ces langues est à cause des compilateurs d'Yestear. Ils avaient besoin de connaître les types de noms à l'avance avant que le nom n'ait été utilisé. Sinon, ils auraient besoin de passer un autre passage à travers le code source. P>
réponses aux questions originales 1, 2, 3: Aucune différence dans C # P>
Cependant, il pourrait être intéressant de mentionner ces termes en ce qui concerne les méthodes: p>
J'ai tendance à être d'accord, bien que je ne suis pas sûr que la communauté C # se soucie vraiment de dessiner même cette distinction.