动态与强类型元素
回答
我主要来自PHP和Python背景,但在3年前转向C#。切换到像C#这样的强类型语言的初级开发当然是一种学习曲线。有时它可能会感觉过于严格,尤其是与C#的非常严格的继承结合在一起时。然而,强类型语言会为您提供很多东西。
首先,也许最重要的是编译时错误。对于像Python这样的动态语言,没有迹象表明在应用程序运行之前您使用了错误的类型,并且您得到了运行时异常。使用强类型语言,应用程序甚至不会构建,因此您通常不会在代码中使用timebombs。其次,强类型语言可以高度优化。通过确保每个东西总是一个特定的类型,编译器可以优化内存分配和实际编译的汇编代码。
第三,强类型语言鼓励良好的编程实践。虽然它可能会受到某种程度的限制,但强类型语言会强制使用动态语言通常缺乏的代码结构。当然,这并不是说用动态语言编写好的代码是不可能的,但是这确实意味着当开发人员不在意花时间或注意细节时,应该用动态语言完成更多的破坏比强类型的强。
也就是说,C#不是全部强类型的。也就是说,有一些令人讨厌的dynamic
关键字,这被滥用得非常频繁,而且MVC几乎鼓励使用类似ViewBag
之类的动态。虽然dynamic
可以有其位置,但我建议尽可能避免它,因为您基本上抛弃了使用强类型语言工作的所有好处。
还有泛型的概念。你可能在没有意识到的情况下使用泛型,但是如果你的编程感觉过度受限,你应该更多地研究它们并学习如何真正利用它们带来的能力。这有点像是动态类型,但它仍然是在编译时设置的,所以你不会失去任何带来的好处。
非常明确的答案,非常感谢:) –
除了Chris提到的东西之外,还有一个性能优势,因为Umbraco中的动态API比强类型的API要慢。
很高兴知道:) –
此外,动态类型将一把umbraco V8被删除:http://issues.umbraco.org/issue/U4-8626
- 1. 动态更改HTML元素类型
- 2. ASP.NET MVC强类型与动态类型视图
- 3. 静态与动态类型
- 4. 动态元素与jQuery
- 5. 动态子元素与jQuery
- 6. 强类型的动态Linq排序
- 7. 动态与对象类型
- 8. Swift动态类型初始化与动态协议类型
- 9. 强类型视图vs动态类型视图
- 10. 使用动态类型的MVC强类型视图
- 11. 动态类型和自定义单元格与静态表
- 12. 与强类型的返回类型
- 13. 元素与属性的类型不同?
- 14. 用于交互式元素的iOS中的动态类型
- 15. 动态生成输入类型=“文件”元素多次上传
- 16. 选择动态添加元素与jQuery ...
- 17. 动态DOM元素与Vue公司
- 18. 将类添加到html元素动态
- 19. 静态类型绑定与动态类型绑定
- 20. 你如何找出元素类型的根元素是与jQuery
- 21. CakePHP动态元素
- 22. 动态父元素
- 23. jquery.Event动态元素
- 24. WPF元素绑定与动态生成的UI元素
- 25. 隐藏动态类与jQuery和选择元素
- 26. 查找元素的动态类名与jQuery
- 27. 变量的静态,动态,弱,强类型
- 28. sIFR元素与类
- 29. CSS'overflow:hidden'如何强制元素(包含浮动元素)环绕浮动元素?
- 30. 将元素放入动态元素
假设你正在使用一把umbraco 7.4+,我真的可以推荐使用Modelsbuilder。它是Umbraco核心的一部分,并为您提供强有力的键入属性。因此,而不是做Model.GetPropertyValue(“aliasName”),你可以做Model.AliasName。这看起来很像使用动态,但是当你配置visual studio的权利,你可以使用intellisense。 HTTP://24天。in/umbraco-cms/2016/Getting-started-with-modelsbuilder/ – Mark