Question

Lors du déplacement du code autour à des fins d'enquête, je suis tombé sur une petite caractéristique de .NET que je ne connaissais pas, qui est que la classe de formulaire doit être la première classe dans un module de formulaire pour le formulaire concepteur de travail. Ce qui suit arrête le concepteur de travail:

public class myClass
{
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

...
}

Il compile encore (avec un avertissement) et fonctionne, mais il l'habitude de concevoir. Si je déménage myClass au fond du dossier, puis il fonctionne très bien. Est-ce que quelqu'un sait pourquoi est-ce le cas?

, cela signifie aussi qu'il ya un ensemble de règles de mise en page de code dans une forme que je ne connais pas. Y at-il une liste de ces quelque part que quelqu'un connaît - ou ai-je trouvé le seul

?
Était-ce utile?

La solution

Je pense que c'est un artefact du concepteur .NET 1.1. À l'époque il n'y avait pas partiel mot-clé encore, le concepteur avait la tâche peu enviable de retrouver la méthode InitializeComponent (), même dans le code qui était au milieu d'être édité. Aucune aide du compilateur.

Pour éviter le risque d'un code complètement l'interprétation incorrecte, il avait quelques règles de base sur ce qui devrait ressembler à ce code. Et demandant à la classe de formulaire pour être la première classe dans le fichier fait beaucoup de sens. Si cette règle ne serait pas là, il devrait être en mesure d'analyser par une classe qui pourrait avoir des erreurs de syntaxe très basiques, comme des accolades asymétriques. Il suffit de déclarer « ne peut pas charger la forme » dans ce cas, ne ferait pas tout le monde heureux.

Cette exigence ne pouvait être levée une fois que le mot clé partiel est devenu disponible, il doit encore soutenir les formes qui ont été conçus dans les versions antérieures.

Il est la seule règle de mise en page de code que je sais. Il y a beaucoup d'autres mésaventures possibles, bricoler avec InitializeComponent () à la main est toujours une bonne façon d'obtenir le WSOD.

Autres conseils

Il semble que le concepteur est juste. Ce ne est rien à craindre.

Cela n'a rien à voir avec C # lui-même, mais plus avec le concepteur Visual Studio pour trouver et dessiner la forme sur l'écran.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top