C#中的早期绑定和后期绑定是什么意思
2022/3/7 6:15:30
本文主要是介绍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。这就是为什么运行时解析过程被称为后期绑定的原因。
这篇关于C#中的早期绑定和后期绑定是什么意思的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27文件掩码什么意思?-icode9专业技术文章分享
- 2024-12-27如何使用循环来处理多个订单的退款请求,代码怎么写?-icode9专业技术文章分享
- 2024-12-27VSCode 在编辑时切换到另一个文件后再切回来如何保持在原来的位置?-icode9专业技术文章分享
- 2024-12-27Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品 审核中
- 2024-12-27TypeScript面试真题解析与实战指南
- 2024-12-27TypeScript大厂面试真题详解与解析
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解