8
votes

cette déclaration après les arguments de la contruceur

J'ai vu ce bloc de code quand j'essayais de construire quelque chose avec APN. Quelqu'un pourrait-il m'expliquer qu'est-ce que "ces" déclarations font là-bas? xxx

est-ce comme des valeurs par défaut de ces arguments?


2 commentaires

@dasblinkenlight bien que sa relation, ce n'est pas un double de cette question en ce qui concerne l'intention.


Voir aussi Stackoverflow.com/questions/3797528/ ...


3 Réponses :


9
votes

Ce appelle le constructeur surchargé de la classe ApplePushService avec les paramètres spécifiés.

Par exemple xxx

Ceci permet d'appeler un constructeur qui peut invoquer un autre.


3 commentaires

Y a-t-il des avantages de faire cela plutôt que d'avoir des paramètres facultatifs?


@Markusmeskanen Les paramètres facultatifs n'ont pas toujours été pris en charge par la langue, ce qui vous permet également d'avoir une commande différente ou d'omettre des paramètres entre les deux. Vous pouvez également utiliser cela facilement pour développer le constructeur (par exemple dans l'exemple ci-dessus, le constructeur de deux paramètres peut également appeler ceci (arg1) , puis faire quelque chose de spécial pour le deuxième paramètre).


@Poke Cool, merci! :)



9
votes

Bien sûr - cette chaîne un constructeur sur un autre. Il existe deux formes - ceci pour chaîner sur un autre constructeur de la même classe et base pour chaîner à un autre constructeur de la classe de base. Le corps du constructeur que vous enchaînez à exécuter, puis votre corps de constructeur s'exécute. (Bien sûr, l'autre constructeur peut enchaîner d'abord sur un autre.)

Si vous ne spécifiez rien, il chaîne automatiquement un constructeur sans paramètre dans la classe de base. Donc: xxx

est équivalent à xxx

Notez que les initialisateurs variables d'instance sont exécutés avant L'autre constructeur est appelé.

surprenant, le compilateur C # ne détecte pas si vous vous retrouvez avec une récursion mutuelle - ce code est donc valide, mais se retrouvera avec un débordement de pile: < Pré> xxx

(cela vous empêche toutefois de chaîner sur la même signature du constructeur, cependant.)

Pour plus de détails, voir mon article sur le constructeur enchaînant .


0 commentaires

3
votes

qui appelle un autre constructeur dans ce cas, le : this (...) code> est utilisé pour appeler un autre constructeur dans cette classe.

Par exemple: P>

public ClassName() : this("abc") { }

public ClassName(string name) { }


0 commentaires