类型
来源:互联网 发布:淘宝电费自动缴费 编辑:程序博客网 时间:2024/04/29 07:19
一、静态类型、动态类型
C# 1.0是静态类型的,因为每个变量都有一个特定的类型,而且该类型再编译时是已知的。
与静态类型对应的是动态类型,后者可能具有多种形式。动态类型的表现是:变量中含有值,但是那些值并不限定于特定的类型,所以编译器不能执行相同形式的检查。因此,执行环境试图采取一种合适的方式来理解引用值的给顶表达形式。
假设C#是动态类型的,那么就可以做下面的事情:
o = "hello";Console.WriteLine(o.Length);o = new string[]{"hi","hahah"};Console.WriteLine(o.Length);
通过在执行时动态检查类型,最终会调用两个完全无关的Length属性——String.Length和Array.Length。
直到C#3.0它仍然是完全静态类型的语言。但是在C#4.0中开始引入了动态类型,但是大部分的C#4.0应用程序的代码仍然是静态类型的。
二、显示类型、隐示类型
显示类型和隐示类型只有在静态语言中才有意义。
显示类型,即变量的类型必须在声明中显示的表达出来,int,string....
隐示类型,即变量的类型没有显示的表达出来,使用var关键字,让编译器自己去推断。
解释第一句话:因为无论是显示类型还是隐示类型,变量的类型在编译时都是已知的——即使是隐示声明。但是在动态语言中,变量根本没有一个类型可供声明或者推断。
三、类型安全与不安全
0 0
- 类型
- 类型
- 类型
- 类型
- 类型
- 类型
- 类型
- (类型*)
- 类型
- 类型
- 值类型-引用类型
- 引用类型 值类型
- 基本类型--可空值类型
- 过程类型,方法类型
- 值类型、引用类型
- 值类型-引用类型
- 值类型、引用类型
- 静态类型 动态类型
- 泛型练习题
- MS sql 判断数据库、表、函数、存储过程是否存在
- 等待唤醒机制
- 如何在两个jsp页面之间传递值
- Android7.0 手机reboot进入系统后wake lock锁问题
- 类型
- Coursera ML笔记1-2
- 位运算相关面试题
- 删数
- Android快速开发系列 10个常用工具类
- 为什么要有Runnable接口的出现?
- python easy_install的安装
- 算法与数据结构基础 -- 排序 (C++实现)
- 直方图的均衡化(Python)