类型

来源:互联网 发布:淘宝电费自动缴费 编辑:程序博客网 时间: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
原创粉丝点击