C#里的 var 和 dynamic 区别到底是什么,你真的搞懂了嘛

2023-06-18 0 650

C# 中的 var 和 dynamic 都是用以新闻稿函数的URL,但它的用语和促进作用相同。

var 是用以新闻稿显式类别函数,即校对器会依照函数的调用函数推测该函数的类别。在校对时,校对器会将 var 换成前述的类别。比如:

var i = 10; // 推测 i 的类别为 int

var message = “hello”

; // 推测 message 的类别为 string

而 dynamic 则是用以新闻稿静态类别函数,即在校对时不选定函数类别,而要在运转时依照函数的前述类别推测。采用 dynamic 新闻稿的函数在校对时不能展开类别检查和,而要在运转TNUMBERV12V4会放出类别极度。比如:

dynamic obj =“hello”

; // obj 的类别为 string

obj = 10; // obj 的类别转变成 int

因而,var 和 dynamic 的主要就差别是类别的推测最佳时机和类别检查和的最佳时机。需要依照具体内容的情景优先选择采用何种URL。

上面得出两个具体内容的范例,展现 var 和 dynamic 的相同用语和效用。假定有两个类 Person,表述如下表所示:

class Person

{

public string Name { get;set

; }

public int Age { get; set

; }

public void SayHello

()

{

Console.WriteLine(“Hello, Im {0}, {1} years old.”

, Name, Age);

}

}

采用 var 新闻稿两个 Person 类别的函数:

var person = new Person { Name = “Tom”

, Age = 20 };

person.SayHello(); // 输出:Hello, I

m Tom, 20 years old.

在这个范例中,校对器会依照 person 的调用函数 new Person { Name = “Tom”, Age = 20 } 推测 person 的类别为 Person,因而可以直接调用 Person 类别的方法 SayHello()。

采用 dynamic 新闻稿两个 Person 类别的函数:

dynamic person = new Person { Name = “Tom”, Age = 20 }; person.SayHello(); // 输出:Hello, Im Tom, 20 years old. person = “Hello”; person.SayHello(); // 放出运转时极度:string does not contain a definition for SayHello

在这个范例中,采用 dynamic 新闻稿函数 person,校对器不能展开类别检查和,而要在运转时依照 person 的前述类别推测。在第一次调用 SayHello() 时,person 的类别为 Person,因而可以正常调用 SayHello()。而在第二次将 person 赋值为字符串 “Hello” 后,再次调用 SayHello() 时,由于字符串类别没有表述 SayHello() 方法,因而会放出运转时极度。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务