您的位置:首页 > 编程语言 > C#

c# 一些细节 之动态对象和匿名对象

2016-04-05 22:39 344 查看
1.动态对象和匿名对象

偶然看到一个语法,觉得特别方便然后频繁使用,但是没有深究,直到今天忽然发现我潜意思中对它的认知居然是错误的.

 var data=new { State=1,Message="ok!" };

 我一直以为这是动态类型对象,因为前面用了var

知道今天我看到了ViewBag.StatusMessage 这时突然一下子发现(其实之前有关门看到ViewData做比较的文章,但一直没想起来这货),

这种语法和JavaScript的类型是一样的,于是我F12了一把:"public dynamic ViewBag { get; }"
 ViewBag 是动态类型dynamic,那var
data是什么类型呢?

然后我尝试这样写

var data=new { };

data.State=1; 

编译错误不包含State定义....so我瞬间,醒悟这是java常用了的匿名类型呀(在new { }这一步时,编译器就会将其类型确定下来,等到运行时,data.State自然就是未定义.),

so 我觉得可以这么理解
而dynamic应该属于运行时的动态类型,匿名类型属于编译前的动态类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: