.net基础扫盲--可变类型(var,dynamic)

之所以要谈及vardynamic,是因为在使用EF框架和使用MVC的时候,会很频繁的用到他们,所以不得不提他们,以便在接触EFMVC的时候能够很好的理解和熟练的应用.

先简单说一下var,虽被称作是可变类型,但他并不是一种若类型,只不过他是通过程序推断来确定类型的.

我们可以这么写:

 

       static void Main(string[] args)
        {
            var i = 10; //经过程序的推断,i最终被推断为 int整型
            var j = "10";//同样,经程序推断为字符型
            Console.WriteLine(i);
            Console.ReadKey();
        }

此后,ij的类型就被认定,分别按照intstring来处理,不再可变,自然就成了强类型。

那我们哪些情况下使用var来申明变量呢?

很多情况下,我们不知道要用的变量是什么类型,或者我知道现在用的是什么类型,但是写起来非常的麻烦,他很长,或者很复杂.就可以用var来声明,让系统自己来推断变量的类型.在用EF架构的时候,很典型的,我们会频繁的用到var

var不同,dynamic是一个纯可变类型,更是一种若类型,在程序运行的时候,你可以把任意一种类型的变量赋值给他,此时他的类型就会随之发生改变。

我们可以这样写:

        static void Main(string[] args)
        {
            //var i = 10; //经过程序的推断,i最终被推断为 int整型
            //var j ="10";//同样,经程序推断为 字符型
            //Console.WriteLine(i);
            //Console.ReadKey();
 
            dynamic i = 10;
    <span style="white-space:pre">	</span>    Console.WriteLine(i);
            i = "10";
            Console.WriteLine(i);
            i = DateTime.Now();
            Console.WriteLine(i);
        }

都不会报错。此时i,没有一个确定的类型,你可以任意的修改它,他也会随之变化,典型的弱类型。

我们可能不会经常用到这个关键字去声明变量,但是我们在学习mvc的时候,会大量的用到,以后再看到的时候知道,他声明的变量,在运行时,会发生变化即可了。总的来说:对于这两个可变类型,var并不是若类型,而是类型推断,在编译阶段完成。dynamic是一种弱类型,在运行阶段,根据变量的值确定变量的类型。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。