Home  >  Article  >  Backend Development  >  What is the difference between var and dynamic in C#?

What is the difference between var and dynamic in C#?

青灯夜游
青灯夜游Original
2019-04-17 11:46:415092browse

In C#, both the keywords var and dynamic can declare dynamically typed variables, which are sometimes easily confused, but they are essentially different. The following article will introduce to you the difference between the keywords var and dynamic in C#. I hope it will be helpful to you. [Video tutorial recommendation: C#tutorial]

What is the difference between var and dynamic in C#?

##C# var keyword

var is a new variable-defining type in 3.5: implicit type; it can be used to define implicitly typed local variables, and VAR can replace any type.

Implicitly typed variables are variables declared without explicitly specifying the data type. In an implicitly typed variable, the compiler automatically deduces the variable's type at compile time from the value used to initialize the variable. The concept of implicitly typed variables was introduced in C# 3.0. Implicitly typed variables are not designed to replace ordinary variable declarations, they are designed to handle some special cases, such as LINQ (Language Integrated Query).

Example:

using System; 
  
class A{ 
  
    // Main方法
    static public void Main() 
    { 
  
        // 使用var关键字创建和初始化隐式类型变量
        var a = 'f'; 
        var b = "php"; 
        var c = 30.67d; 
        var d = false; 
        var e = 54544; 
  
        // 输出类型 
        Console.WriteLine("'a'的类型是: {0} ", a.GetType()); 
  
        Console.WriteLine("'b'的类型是: {0} ", b.GetType()); 
  
        Console.WriteLine("'c'的类型是: {0} ", c.GetType()); 
  
        Console.WriteLine("'d'的类型是: {0} ", d.GetType()); 
  
        Console.WriteLine("'e'的类型是: {0} ", e.GetType()); 
    } 
}

Output:

'a'的类型是: System.Char 
'b'的类型是: System.String 
'c'的类型是: System.Double 
'd'的类型是: System.Boolean 
'e'的类型是: System.Int32

C# dynamic keyword

dynamic is a new type of variable definition in 4.0: dynamic type; it is used to avoid compile-time type checking. The compiler does not check the type of a dynamically typed variable at compile time. Instead, the compiler obtains the type at runtime. Dynamically typed variables are created using the dynamic keyword.

Example:

using System; 
  
class A { 
  
    // Main方法
    static public void Main() 
    { 
  
        // 使用dynamic关键字创建和初始化隐式类型变量
dynamic val1 = 'a'; 
        dynamic val2 = "hello"; 
        dynamic val3 = 3234; 
        dynamic val4 = 32.55; 
        dynamic val5 = true; 
  
        // 输出类型 
Console.WriteLine("val1的实际类型是:{0}", val1.GetType().ToString()); 
  
        Console.WriteLine("val2的实际类型是:{0}", val2.GetType().ToString()); 
  
        Console.WriteLine("val3的实际类型是:{0}", val3.GetType().ToString()); 
  
        Console.WriteLine("val4的实际类型是:{0}", val4.GetType().ToString()); 
Console.WriteLine("val5的实际类型是:{0}", val5.GetType().ToString()); 
    } 
}

Output:

val1的实际类型是:System.Char
val2的实际类型是:System.String
val3的实际类型是:System.Int32
val4的实际类型是:System.Double
val5的实际类型是:System.Boolean

What is the difference between the keywords var and dynamic in C#?

1. Declared variables

The keyword var was introduced in C# 3.0. The declared variables are of static type. Variables The type is determined by the compiler at compile time.

The keyword dynamic was introduced in C# 4.0. The declared variables are dynamically typed, and the type of the variable is determined by the compiler at runtime.

2. Initialization

Variables declared with the keyword var should be initialized when declared, so that the compiler will determine the type of the variable based on the initialized value. If the variable is not initialized, an error is thrown.

Variables declared with the dynamic keyword do not need to initialize variables of this type when they are declared, because the compiler does not know the type of the variable at compile time. If the variable is not initialized, no error will be thrown.

3. IntelliSense support

The keyword var supports intelliSense in visual studio. The keyword dynamic does not support intelliSense

4 in visual studio. Application

The keyword var cannot be used for properties or to return values ​​from functions. It can only be used as a local variable within a function.

The keyword dynamic can be used for properties or returning values ​​from functions.

The above is the entire content of this article, I hope it will be helpful to everyone's study. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

The above is the detailed content of What is the difference between var and dynamic in C#?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn