객체 변수에 객체가 할당되면 컴파일러는 바인딩이라는 프로세스를 수행합니다. C#에서는 초기 바인딩과 후기 바인딩이라는 두 가지 바인딩 유형을 수행합니다. 다음 기사에서는 이 두 가지 바인딩을 소개하겠습니다. 도움이 되기를 바랍니다.
Early 바인딩
Early 바인딩은 정적 바인딩이라고도 하며, 이는 컴파일 타임 바인딩을 의미하며 기본적으로 강력한 형식의 개체 또는 정적으로 형식의 개체입니다. [튜토리얼 추천: C# 동영상 튜토리얼]
Early Binding은 컴파일 중에 메서드, 속성, 기능을 식별 및 확인하고 애플리케이션 실행 전에 기타 최적화를 수행합니다. 이 바인딩에서 컴파일러는 해당 객체가 어떤 유형인지, 어떤 메서드나 속성을 가지고 있는지 이미 알고 있습니다.
초기 바인딩의 장점
1. 빠른 성능
2. 코딩 및 개발이 용이함
3. 런타임 오류 감소
예:
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(); } }
컴파일 중 오류:
지침: 위의 예에는 People이라는 클래스가 있습니다. 이 클래스에는 세부사항() 메소드가 포함되어 있습니다. 여기서 컴파일러는 People에 존재하는 속성과 메서드를 이미 알고 있습니다. 그러나 mymethod()를 호출하려고 하면 컴파일러가 이 메서드를 모르기 때문에 오류가 발생합니다.
후기 바인딩
후기 바인딩을 동적 바인딩이라고도 합니다. 후기 바인딩에서 컴파일러는 개체 유형이 무엇인지, 개체가 어떤 메서드나 속성을 가지고 있는지 알지 못합니다. 여기서 개체는 동적 개체입니다. 객체의 유형은 런타임 시 오른쪽에 보유하는 데이터를 기반으로 결정됩니다. 기본적으로 런타임 바인딩은 가상 메서드를 사용하여 수행됩니다.
후기 바인딩의 가장 큰 장점은 이러한 유형의 개체가 모든 개체에 대한 참조를 보유할 수 있다는 점이지만 초기 바인딩 개체에는 많은 장점이 부족합니다. 예를 들어, 런타임 바인딩은 런타임에 조회가 필요하므로 초기 바인딩보다 성능이 느립니다.
예:
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()); } }
출력:
설명:
위의 예에서 obj는 정수형 데이터를 보유하고 obj1은 이중 유형 데이터를 보유합니다. 그러나 컴파일러는 컴파일 타임에 이러한 문제를 해결하지 않습니다. 런타임 시 이러한 동적 개체가 감지되어 각각 System.Int32 및 System.Double로 변환됩니다. 이것이 런타임 확인 프로세스를 후기 바인딩이라고 부르는 이유입니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !
위 내용은 C#의 초기 바인딩과 후기 바인딩에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!