Classe partielle avec la même méthode de nom
J'ai une classe partielle comme ce
public partial class ABC
{
public string GetName()
{
//some code here
}
public string GetAge()
{
//some code here
}
}
public partial class ABC
{
public string GetSex()
{
//some code here
}
public string GetAge()
{
//some code here
}
}
Comment ces 2 classe de fusion au moment de la construction? Merci de me donner des explications à ce sujet.
source d'informationauteur Pankaj | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Il y aura un erreur de compilation lorsque vous essayez de compiler ce code!
Ce qui se passe au moment de la construction est le
compiler
combine tous les membres définis à l' tous les les définitions partielles de la classe dans un. Il va alors essayer de le compiler la manière habituelle.Dans votre cas, il sera générer une erreur de mentionner vous avez déjà défini une méthode avec le même nom.
Cela ne compile pas que vous ne pouvez pas avoir les deux méthodes avec le même nom dans une classe.
Outre les erreurs syntaxiques votre code ne compile pas. Vous obtiendrez l'erreur suivante:
C'est parce que le compilateur va fusionner toutes les parties d'une classe partielle dans une classe unique comme
L'article 10.2 de la Spécification du Langage C# explique:
C# ne permettent pas de disposer de méthodes avec le même nom et avec le même nombre et les types d'arguments dans une seule classe. Ceci est précisé dans l'article 1.6.6 du cahier des charges:
Il y a une option bien d'ajouter la déclaration d'une méthode dans une partie d'une classe partielle et la mise en œuvre dans un autre: Méthodes Partielles. Vous pouvez en lire plus à ce sujet, Eric Lippert du billet de blog sur le sujet:
Classes partielles sont fusionnées lors de la compilation.
Les compilateurs de regarder pour les classes partielles et de les intégrer lors de la compilation. Il combine "deux" classes partielles dans une classe. Il n'y a aucune modification dans le CLR pour la mise en œuvre de classes partielles. Vous pouvez le considérer comme la fusion de "deux" classes partielles.
Par exemple pour votre code, vous aurez :
Et il vous donnera une erreur parce que vous ne pouvez pas avoir 2 méthodes avec le même nom et la signature (voir
GetAge
méthode).Ils ne fusionnent pas: vous aurez une erreur de compilation.
Ils ne fusionnent pas: erreur de compilation. Ils pourraient fusionner dans votre cas, si vous avez accidentellement mis dans des espaces de noms différents.
Le préprocesseur (ou le compilateur peut-être) analyse de Votre dossier de projet au cours de l'une de ses pistes, et vérifie les classes de noms qui sont dans un projet(ou de l'assemblée pour être précis). Alors il marque les classes partielles et vérifie si il y a plusieurs définitions.
Demande à Eric Lippert sur les détails. Il fusionne ensuite les méthodes, les commentaires, les attributs, les membres, les interfaces, etc.
À lire sur le c# lang spécification.
Vos méthodes n'ont pas partielle modfier de sorte que les gars devant moi a remarqué, il ne compile pas.
Essayez ceci:
Quitter le partielle de la première de la classe !