旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

浅谈C#中的初期绑定和后期绑定【C#.Net教程】,C#,早期绑定,后期绑定

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:181评论:0


导读:当对象分配给对象变量时,编译器实行称为绑定的历程。C#实行两种差别范例的绑定:初期绑定和后期绑定。下面本篇文章就来带人人认识一下这两种绑定,愿望对人人有所协助。初期绑定...
当对象分配给对象变量时,编译器实行称为绑定的历程。C#实行两种差别范例的绑定:初期绑定和后期绑定。下面本篇文章就来带人人认识一下这两种绑定,愿望对人人有所协助。

初期绑定

初期绑定也称静态绑定,是指编译时绑定;初期绑定对象基本上是强范例对象或静态范例对象。【教程引荐:C#视频教程】

初期绑定在编译时期辨认并搜检要领、属性、函数,并在应用程序实行之前实行其他优化。在这个绑定中,编译器已晓得它是什么范例的对象以及它具有的要领或属性。

初期绑定的长处

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的类。该类包括details()要领。这里,编译器已晓得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。这就是为何运行时剖析历程被称为后期绑定的缘由。

以上就是本篇文章的全部内容,愿望能对人人的进修有所协助。更多精彩内容人人能够关注ki4网相干教程栏目!!!

以上就是浅谈C#中的初期绑定和后期绑定的细致内容,更多请关注ki4网别的相干文章!

标签:C#早期绑定后期绑定


欢迎 发表评论: