c# - 动态与强类型元素

标签 c# asp.net-mvc-3 umbraco

我是一名网络开发人员,目前正在使用 mvc3 razor 和 Umbraco创建 Web 应用程序。我从事这项工作的时间不长,并且已经从使用动态元素转变为使用强类型元素以遵循标准。

我从来没有真正得到过太多的理由,在网上搜索似乎很清楚,它更容易跟踪和调试集合类型变量,但我对在函数中使用它感到困惑。

例如,在使用 Umbraco Content 时,我现在切换到 1Umbraco.TypedContent1。我猜它返回一个强类型变量,但除了调试之外还有其他好处吗?

最佳答案

我主要来自 PHP 和 Python 背景,但大约 3 年前切换到 C#。切换到像 C# 这样的强类型语言的初级开发无疑是一个学习曲线。有时它会感觉过于严格,尤其是与 C# 非常严格的继承结合使用时。然而,强类型语言给你带来了很多东西。

首先,可能最重要的是编译时错误。对于像 Python 这样的动态语言,在应用程序运行并且您遇到运行时异常之前,没有迹象表明您使用了错误的类型。使用强类型语言,应用程序甚至不会构建,因此您通常不会在代码中遇到定时炸弹。

其次,强类型语言可以高度优化。通过确保每个事物始终是特定类型,编译器可以优化内存分配和实际编译的汇编代码。

第三,强类型语言鼓励良好的编程实践。虽然感觉有些限制,但强类型语言会强制您的代码采用动态语言通常缺乏的结构。当然,这并不是说用动态语言编写好的代码是不可能的,但这确实意味着当开发人员不关心他们应该花时间或关注细节时,动态语言可能会造成更大的损害而不是强类型的。

也就是说,C# 并非都是强类型的。即,有些可恶的dynamic关键字,它经常被滥用,而 MVC 几乎鼓励将动态与诸如 ViewBag 之类的东西一起使用。 .而dynamic可以有它的位置,我建议尽可能避免它,因为你基本上放弃了使用强类型语言工作的所有好处。

还有泛型的概念。您可能在没有意识到的情况下使用泛型,但如果您觉得自己的编程受到了过度限制,您可能应该更多地研究它们并学习如何真正利用它们带来的力量。这有点像拥有一个动态类型,但它仍然是在编译时设置的,所以你不会失去任何带来的好处。

关于c# - 动态与强类型元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42370609/

相关文章:

c# - MVC 通过 C#/WPF : how to notify view?

javascript - 让 Jquery 代码变得通用?

umbraco - 多语言、智能链接转换

c# - Windows Phone 开发错误错误 "Csc.exe"退出,代码为 -1073741819

c# - XML 到 CSV 使用 c# 而不使用 xslt

c# - 开发人员是否可以通过 "force"系统来防止 "Metro"应用程序在后台异步进程运行时被挂起?

asp.net-mvc-3 - ASP.NET MVC3 : Do I need to use a MembershipProvider?

asp.net-mvc-3 - "Bogus"Web 项目需要 razor 缺少 Web 组件消息

sql-server-2008-r2 - Umbraco CMS 中的更改不会在前端立即更新

.net - Umbraco中的数据库连接初始化失败