微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 动态,对象,Var

随着动态类型和.NET 4中的DLR的出现,我现在有3个选项来声明我称之为“开放”类型:

> var,局部隐式类型强调’what’而不是’how’,
> object,System.Object的别名,和
>动态,禁用编译器检查,在运行时添加方法/属性

虽然那里有很多关于这些的文章,但我发现的并没有把它们放在一起,我不得不承认,它仍然有点模糊.

添加到这个LINQ,lambda表达式,匿名类型,反射……它变得更加不稳定.

我想看一些例子,也许是对比优势/劣势,帮助我巩固对这些概念的把握,并帮助我理解何时,何地以及如何在它们之间进行选择.

谢谢!

解决方法

>使用var来保持代码简短和可读性,或者使用匿名类型时:
var dict = new Dictionary<int,List<string>>();

var x = db.Person.Select(p => new { p.Name,p.Age });

>动态绑定有用或需要时使用动态.或者,当您需要根据对象的运行时类型决定调用哪个方法时.
>尽可能少地使用对象,更喜欢使用特定类型或泛型.一个有用的地方是当你有一个用于锁定的对象时:

object m_lock = new object();

lock (m_lock)
{
    // do something
}

原文地址:https://www.jb51.cc/csharp/100383.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐