C # La fonction de construction peut être asynchrone?
En C #, le constructeur n'est généralement pas autorisé à être déclaré comme une méthode asynchrone, ce qui signifie qu'ils ne peuvent pas contenir modificateurs. Lorsque vous essayez, le compilateur rapportera une erreur, soulignant que le modificateur
n'est pas valide pour le constructeur.
async
Ce comportement provient des facteurs suivants: async
Le constructeur est exécuté caché lorsque l'objet est instancié, et il doit être terminé simultanément. Les opérations asynchrones peuvent introduire un retard ou des anomalies, qui peuvent ne pas être appropriées lors de l'initialisation de l'objet.
Le constructeur doit établir l'état initial de l'objet, et cet état doit être prédit et peut être répété. Les opérations asynchrones peuvent entraîner un changement de temps et des résultats non confirmés, ce qui peut détruire le processus d'initialisation de l'objet. -
Le constructeur doit généralement être affiché pour créer des instances, et les méthodes asynchrones dépendent généralement d'une commission ou d'un rappel asynchrones pour récupérer des données. Cette non-correspondance le rend défier le constructeur et le fonctionnement asynchrone de manière significative. -
- L'alternative du constructeur asynchrone
Si l'acquisition de données est requise lors de la création de l'objet, vous pouvez utiliser plusieurs méthodes pour remplacer la fonction de structure asynchrone:
Attributs d'initialisation automatiques:
Utiliser des attributs d'implémentation automatiques ou des champs privés pour initialiser les données asynchrones et en même temps suivre les caractéristiques de synchronisation du constructeur.
Chargement de retard: - Implémentez le mécanisme de chargement de retard, tel que le Getter d'attribut qui effectue des opérations asynchrones lorsque le premier appel est appelé. Cela permet des données de récupération retardées après l'instanciation de l'objet.
Méthode d'usine asynchrone:
Créez une méthode d'usine asynchrone statique qui renvoie l'instance de classe requise. Ces méthodes peuvent traiter l'acquisition de données asynchrones et fournir un moyen pratique d'appliquer des objets de données pré-remplis. -
La solution fournie dans l'article, même si la méthode asynchrone statique de retour de l'instance de classe est une méthode variable, combine efficacement les avantages de l'acquisition asynchrone des données et les contraintes des constructeurs synchrones. Cependant, par rapport à l'alternative ci-dessus, il peut introduire une complexité supplémentaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!