之所以要谈及var和dynamic,是因为在使用EF框架和使用MVC的时候,会很频繁的用到他们,所以不得不提他们,以便在接触EF和MVC的时候能够很好的理解和熟练的应用.
先简单说一下var,虽被称作是可变类型,但他并不是一种若类型,只不过他是通过程序推断来确定类型的.
我们可以这么写:
static void Main(string[] args) { var i = 10; //经过程序的推断,i最终被推断为 int整型 var j = "10";//同样,经程序推断为字符型 Console.WriteLine(i); Console.ReadKey(); }
此后,i、j的类型就被认定,分别按照int、string来处理,不再可变,自然就成了强类型。
那我们哪些情况下使用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是一种弱类型,在运行阶段,根据变量的值确定变量的类型。
时间: 2024-10-22 20:06:18