Maison > Article > développement back-end > Une brève discussion sur la liaison précoce et la liaison tardive en C#
Lorsqu'un objet est affecté à une variable d'objet, le compilateur effectue un processus appelé liaison. C# effectue deux types de liaison différents : la liaison anticipée et la liaison tardive. L'article suivant vous présentera ces deux liaisons, j'espère qu'il vous sera utile.
Liaison anticipée
La liaison anticipée est également appelée liaison statique, qui fait référence à la liaison au moment de la compilation Les premiers objets liés sont essentiellement des objets fortement typés ou des objets typés statiquement. [Recommandation du didacticiel : Tutoriel vidéo C#]
La liaison anticipée identifie et vérifie les méthodes, les propriétés et les fonctions lors de la compilation et effectue d'autres optimisations avant l'exécution de l'application. Dans cette liaison, le compilateur sait déjà de quel type d'objet il s'agit et de quelles méthodes ou propriétés il dispose.
Avantages de la liaison précoce
1. Performances rapides
2 Facile à coder et à développer
3. erreurs d'exécution
Exemple :
using System; class People { // data members public string name; public string subject; // public method public void details(string name, string subject) { this.name = name; this.subject = subject; Console.WriteLine("我的名字是: " + name); Console.WriteLine("我最喜欢的科目是: " + subject); } } class GFG { // Main 方法 static void Main(string[] args) { // 创建People类的对象 People g = new People(); // 调用People类的方法 g.details("Ankita", "C#"); // 调用“myMethod()”时出错 // 因为这个方法不属于People类,或者编译器在编译时不知道mymethod() g.mymethod(); } }
Des erreurs se sont produites au moment de la compilation :
Explication : Dans l'exemple ci-dessus, nous avons une classe appelée People. Cette classe contient la méthode détails(). Ici, le compilateur connaît déjà les propriétés et méthodes qui existent dans People. Mais lorsque nous essayons d'appeler mymethod(), cela génère une erreur car le compilateur ne connaît pas cette méthode.
Reliure tardive
La liaison tardive est également appelée liaison dynamique. En liaison tardive, le compilateur ne sait pas de quel type d'objet il s'agit et de quelles méthodes ou propriétés il dispose, ici l'objet est un objet dynamique. Le type d'un objet est déterminé en fonction des données qu'il contient sur le côté droit au moment de l'exécution. Fondamentalement, la liaison tardive est obtenue à l'aide de méthodes virtuelles.
Le plus grand avantage de la liaison tardive est que ce type d'objet peut contenir une référence à n'importe quel objet, mais il lui manque de nombreux avantages des objets de liaison précoce. Par exemple : la liaison tardive est plus lente que la liaison anticipée, car elle nécessite des recherches au moment de l'exécution.
Exemple :
using System; class GFG { static void Main() { // Dynamic objects dynamic obj = 4; dynamic obj1 = 5.678; // 显示对象的类型 Console.WriteLine("对象类型为:"); // 使用getType()方法来获取类型 Console.WriteLine(obj.GetType()); Console.WriteLine(obj1.GetType()); } }
Sortie :
Explication :
Dans l'exemple ci-dessus, obj stocke les données de type entier et obj1 stocke les données de type double. Mais le compilateur ne résout pas ces problèmes au moment de la compilation. Au moment de l'exécution, ces objets dynamiques sont détectés et convertis respectivement en System.Int32 et System.Double. C'est pourquoi le processus de résolution d'exécution est appelé liaison tardive.
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !
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!