数据使用请教一下

睡神在睡觉 2013-04-18 07:13:44
dynamic,var,object

这样的数据类型该什么时候用呢?该怎么区分去使用?本质区别是啥咧?有点茫然,求指点~
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
quanben 2013-04-23
  • 打赏
  • 举报
回复
表示用的最广泛的是var,用它写出的代码叫那个漂亮啊,而且在保证质量情况下在C#本已很高的开发效率上进一步大幅提高。另外这个var和javascript还是略微有些去别的, javascript是弱类型,所以对变量类型根本不在乎(所以实际更接近dynamic,但也不绝对一样),c#中用var仍旧保持了强类型。这个类似物在别的语言中目前只有D语言看到。
  • 打赏
  • 举报
回复
object从1.0就有了 var从3.5有的 dynamic从4.0才有
threenewbee 2013-04-22
  • 打赏
  • 举报
回复
引用 3 楼 cuit 的回复:
dynamic是从ruby取的精髓 var是从javascript取的精髓 object是一个面向对象语言最基本的类。
C#的var和js的var完全不同! C#的dynamic类似VB6的object。
threenewbee 2013-04-22
  • 打赏
  • 举报
回复
var 不是数据类型,而是语法糖,也就是让编译器去判断,这个var是什么。 var x = 1;编译器视作int x = 1; var x = "a";编译器视作string x = "a"; var x; //报错 var x = 1; x = "a"; //报错 dynamic本质上是object,但是dynamic执行后期的绑定,也就是你可以在编写代码的时候调用任意的成员,编译器都会产生相应的代码,而不管这个成员是否存在。 object只是任何对象的基类,如果你不执行一个转换,编译器不允许你调用任何这个类型的成员。 object o = new Person(); o.Name = "a"; // error (o as Person).Name = "a"; // correct
gnimgnot 2013-04-22
  • 打赏
  • 举报
回复
dynamic是从ruby取的精髓 var是从javascript取的精髓 object是一个面向对象语言最基本的类。
睡神在睡觉 2013-04-22
  • 打赏
  • 举报
回复
= =!没人解答么。。。
燕雀之志 2013-04-22
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
var 不是数据类型,而是语法糖,也就是让编译器去判断,这个var是什么。 var x = 1;编译器视作int x = 1; var x = "a";编译器视作string x = "a"; var x; //报错 var x = 1; x = "a"; //报错 dynamic本质上是object,但是dynamic执行后期的绑定,也就是你可以在编写代码的时候调用任意的成员,编译……
引用 8 楼 caozhy 的回复:
引用 7 楼 sleep0110 的回复: 在用法上大概算是知道吧,现在用var现在只是在匿名方法的等地方用,object用的就广泛了,几乎处处用,最明显的就是反射用吧,dynamic用起来是方便,但是隐性问题可能多些(A在写代码的时候定义的是int,B在写代码的时候同样的东西用成string)想听听你们怎么认为的?或者说我用的是不是不恰当? 可惜你知道得很多都是错的。 var和匿名方法……
学习了,我的理解是dynamic类型在编译期间不进行任何的类型检查,类型检查是在程序运行的时候。实际上,它就是个object类型。
threenewbee 2013-04-22
  • 打赏
  • 举报
回复
引用 7 楼 sleep0110 的回复:
在用法上大概算是知道吧,现在用var现在只是在匿名方法的等地方用,object用的就广泛了,几乎处处用,最明显的就是反射用吧,dynamic用起来是方便,但是隐性问题可能多些(A在写代码的时候定义的是int,B在写代码的时候同样的东西用成string)想听听你们怎么认为的?或者说我用的是不是不恰当?
可惜你知道得很多都是错的。 var和匿名方法没有关系。稍微沾边的是匿名类型对象。 dynamic的“隐性问题”不是什么问题,因为object也存在。你无非用两个办法使用object,一个是强制类型转换,如果你搞错了类型,同样会收到一个无法转换的异常。至于反射也是一样,你同样不能给一个int类型的属性用反射赋给一个string类型。 无论是var还是dynamic都是简化了你代码的书写。
睡神在睡觉 2013-04-22
  • 打赏
  • 举报
回复
在用法上大概算是知道吧,现在用var现在只是在匿名方法的等地方用,object用的就广泛了,几乎处处用,最明显的就是反射用吧,dynamic用起来是方便,但是隐性问题可能多些(A在写代码的时候定义的是int,B在写代码的时候同样的东西用成string)想听听你们怎么认为的?或者说我用的是不是不恰当?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧