隐式类型的局部变量– var是那些声明时未指定.NET类型明确地。在隐式类型的变量中, 编译器会在编译时从用于初始化变量的值中自动推导出变量的类型。隐式类型变量的概念在C#3.0。隐式类型变量并非旨在代替普通变量声明, 而是旨在处理某些特殊情况, 例如LINQ(语言集成查询)。
例子:
//C# program to illustrate the concept
//of the implicitly typed variable
using System;
class GFG {//Main method
static public void Main()
{//Creating and initializing
//implicitly typed variables
//Using var keyword
var a = 'f' ;
var b = "srcmini" ;
var c = 30.67d;
var d = false ;
var e = 54544;
//Display the type
Console.WriteLine( "Type of 'a' is : {0} " , a.GetType());
Console.WriteLine( "Type of 'b' is : {0} " , b.GetType());
Console.WriteLine( "Type of 'c' is : {0} " , c.GetType());
Console.WriteLine( "Type of 'd' is : {0} " , d.GetType());
Console.WriteLine( "Type of 'e' is : {0} " , e.GetType());
}
}
输出如下:
Type of 'a' is : System.Char
Type of 'b' is : System.String
Type of 'c' is : System.Double
Type of 'd' is : System.Boolean
Type of 'e' is : System.Int32
C# 4.0, 引入了一种新的类型dynamic, 称为动态类型。它用于避免编译时类型检查。编译器在编译时不检查动态类型变量的类型, 而是在运行时检查该类型。动态类型变量是使用dynamic关键字创建的。
【C#中var和dynamic之间有什么区别()】例子:
//C# program to illustrate how to get the
//actual type of the dynamic type variable
using System;
class GFG {//Main Method
static public void Main()
{//Dynamic variables
dynamic val1 = "srcmini" ;
dynamic val2 = 3234;
dynamic val3 = 32.55;
dynamic val4 = true ;
//Get the actual type of
//dynamic variables
//Using GetType() method
Console.WriteLine( "Get the actual type of val1: {0}" , val1.GetType().ToString());
Console.WriteLine( "Get the actual type of val2: {0}" , val2.GetType().ToString());
Console.WriteLine( "Get the actual type of val3: {0}" , val3.GetType().ToString());
Console.WriteLine( "Get the actual type of val4: {0}" , val4.GetType().ToString());
}
}
输出如下:
Get the actual type of val1: System.String
Get the actual type of val2: System.Int32
Get the actual type of val3: System.Double
Get the actual type of val4: System.Boolean
以下是C#中var和dynamic关键字之间的一些区别:
Var | dynamic |
---|---|
它在C#3.0中引入。 | 它在C#4.0中引入 |
使用var关键字声明的变量是静态类型的。 | 使用dynamic关键字声明的变量是动态类型的。 |
变量的类型由编译器在编译时确定。 | 变量的类型由编译器在运行时确定。 |
此类型的变量应在声明时进行初始化。这样, 编译器将根据其初始化的值来决定变量的类型。 | 此类型的变量无需在声明时进行初始化。因为编译器在编译时不知道变量的类型。 |
如果未初始化变量, 则会引发错误。 | 如果未初始化变量, 则不会引发错误。 |
它在Visual Studio中支持intelliSense。 | 它不支持Visual Studio中的intelliSense |
var myvalue = http://www.srcmini.com/10;
//陈述1 myvalue =http://www.srcmini.com/” srcmini” ; //陈述2 在这里, 编译器将引发错误, 因为编译器已经使用语句1(它是整数类型)确定了myvalue变量的类型。当你尝试将字符串分配给myvalue变量时, 编译器将给出错误, 因为它违反了安全规则类型。 |
动态myvalue = http://www.srcmini.com/10;
//陈述1 myvalue =http://www.srcmini.com/” srcmini” ; //陈述2 在这里, 尽管myvalue的类型是整数, 编译器也不会抛出错误。将字符串分配给myvalue时, 它将重新创建myvalue的类型并接受字符串而不会出现任何错误。 |
它不能用于属性或从函数返回值。它只能用作函数中的局部变量。 | 它可用于属性或从函数返回值。 |
推荐阅读
- Golang中var关键字和短声明运算符之间的区别
- C#中系统级别异常和应用程序级别异常之间的区别
- 在kubernetes中使用nfs-provisioner动态存储卷
- Spring认证指南(了解如何使用 Spring 执行表单验证)
- #yyds干货盘点# SAP UI5 batch 请求的响应解析流程分析
- 精简指令集计算机
- 编程语言(JavaC++)先学那个好()
- 兄弟们-加油加油加油,不要放弃!linux命令chmodchown奉上!点赞收藏加关注爱你们哟!
- 百度手机助手存储资源优化实践