2013-01-13 4 views
0

C'est probablement une question stupide, mais voilà. J'ai cette déclaration dans mon programme:Syntaxe C# - nom de classe avec indexeur?

// No node should be shown as selected 
mdxTreeList.Selection.Set(new TreeListNode[0]); 

La mdxTreeList variable est une instance de contrôle DevExpress XtraTreeList.TreeList et TreeListNode est le nom d'une autre classe DevExpress. Mais que signifie exactement la syntaxe "new TreeListNode [0]"? J'aurais pensé que c'était une erreur de syntaxe, mais ça fonctionne très bien. (Si je me souviens bien, cette déclaration provenait à l'origine d'un exemple de programme DevExpress.)

Répondre

4

C'est un tableau unidimensionnel avec une longueur nulle (c'est-à-dire des membres zéro). Le type est TreeListNode[].

Certaines personnes préfèrent écrire la même chose que new TreeListNode[] { } mais c'est juste une question de goût. Par ailleurs, depuis static indexers are not allowed in C#, il n'y a aucune possibilité que cela puisse être un accès indexeur. (Bien sûr, les indexeurs sont signifiait pour ressembler à des tableaux, donc ce n'est pas un hasard si les deux utilisent la syntaxe du crochet carré [].)

+0

Oui, bien sûr. Merci. – RenniePet

+0

Merci pour vos commentaires supplémentaires. Pépin de cerveau de ma part, se sentant très embarrassé. Une seule excuse est que j'ai juste essayé de créer un nouvel objet TreeListNode avec "new TreeListNode()", et cela a échoué, en disant que le constructeur était interne, et ensuite je remarquais cette déclaration où "new" et "TreeListNode" étaient impliqués et ... oh mon dieu, oh mon dieu. – RenniePet

4

C'est juste un tableau de type TreeListNode[] avec zéro élément.

+0

Oui, bien sûr. Merci. – RenniePet