Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion der frühen Bindung und der späten Bindung in C#

Eine kurze Diskussion der frühen Bindung und der späten Bindung in C#

青灯夜游
青灯夜游Original
2019-01-31 15:27:033514Durchsuche

Wenn ein Objekt einer Objektvariablen zugewiesen wird, führt der Compiler einen Prozess namens Bindung durch. C# führt zwei verschiedene Arten der Bindung durch: frühe Bindung und späte Bindung. Der folgende Artikel stellt Ihnen diese beiden Bindungen vor. Ich hoffe, er ist hilfreich für Sie.

Eine kurze Diskussion der frühen Bindung und der späten Bindung in C#

Frühe Bindung

Frühe Bindung wird auch als statische Bindung bezeichnet, was sich auf die Bindung zur Kompilierungszeit bezieht Definiert sind früh gebundene Objekte grundsätzlich stark typisierte Objekte oder statisch typisierte Objekte. [Tutorial-Empfehlung: C#-Video-Tutorial]

Frühe Bindung identifiziert und überprüft Methoden, Eigenschaften und Funktionen während der Kompilierung und führt andere Optimierungen vor der Anwendungsausführung durch. In dieser Bindung weiß der Compiler bereits, um welche Art von Objekt es sich handelt und welche Methoden oder Eigenschaften es hat.

Vorteile der frühen Bindung

1. Schnelle Leistung

Einfach zu programmieren und zu entwickeln

3 Laufzeitfehler

Beispiel:

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(); 
    } 
}

Beim Kompilieren sind Fehler aufgetreten:

Eine kurze Diskussion der frühen Bindung und der späten Bindung in C#

Beschreibung:Im obigen Beispiel haben wir eine Klasse namens People. Diese Klasse enthält die Methode details(). Dabei kennt der Compiler bereits die Eigenschaften und Methoden, die in People vorhanden sind. Wenn wir jedoch versuchen, mymethod() aufzurufen, wird ein Fehler ausgegeben, da der Compiler diese Methode nicht kennt.

Späte Bindung

Die späte Bindung wird auch als dynamische Bindung bezeichnet. Bei der späten Bindung weiß der Compiler nicht, um welche Art von Objekt es sich handelt und welche Methoden oder Eigenschaften es besitzt. Hier ist das Objekt ein dynamisches Objekt. Der Typ eines Objekts wird anhand der Daten bestimmt, die es zur Laufzeit auf der rechten Seite enthält. Grundsätzlich wird die späte Bindung durch den Einsatz virtueller Methoden erreicht.

Der größte Vorteil der späten Bindung besteht darin, dass dieser Objekttyp einen Verweis auf jedes Objekt enthalten kann, ihm fehlen jedoch viele der Vorteile der frühen Bindung von Objekten. Beispiel: Die späte Bindung ist langsamer als die frühe Bindung, da Suchvorgänge zur Laufzeit erforderlich sind.

Beispiel:

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()); 
    } 
}

Ausgabe:

Eine kurze Diskussion der frühen Bindung und der späten Bindung in C#

Erklärung:

Im obigen Beispiel enthält obj Daten vom Typ Integer und obj1 Daten vom Typ Double. Der Compiler löst diese Probleme jedoch nicht zur Kompilierungszeit. Zur Laufzeit werden diese dynamischen Objekte erkannt und in System.Int32 bzw. System.Double konvertiert. Aus diesem Grund wird der Laufzeitauflösungsprozess als späte Bindung bezeichnet.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion der frühen Bindung und der späten Bindung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn