我是否受限于C#和ASP?

时间:2009-01-26 08:06:36

标签: c# asp.net

目前,我拥有基本的C ++和PHP技能。 但是,我想切换到C#和ASP(对于Web部分)。 为什么?你会问。 因为我有机会很容易地学习C#(包括OOP-ed)到一个非常高级的水平。 因为我读到ASP与C#非常相似,我正在考虑学习它。

那么,有很多东西在C#中无法完成?什么样的东西? ASP的相同问题。

4 个答案:

答案 0 :(得分:7)

C#的限制(以及通过关联,.NET):

  • 不是真正的系统级语言 - 通常不适合编写驱动程序等。(尽管如此,还有像Cosmos这样的有趣项目。)
  • 对Windows以外平台的有限支持。 Mono做得很好,但它仍然与.NET本身不相称(与在多个平台上同时发布的Java相比)。
  • 只有作为非托管语言运行的选项才是第三方语言 - ngen将“预先JIT”你的代码,但它仍然在.NET框架下运行。实际上,C#旨在通过垃圾收集在VM中运行。
  • 有些人不喜欢缺乏确定性破坏,这意味着C ++ RAII技术不起作用。 (相反,您依靠GC进行内存管理,而IDisposable接口则依赖于非内存资源。using语句使这更容易,但它不是一个完美的解决方案。)
  • 这种语言有点像微软的心血来潮。如果MS决定放弃它,我认为它不会再进一步​​发展,很快就会失去对新开发的支持。话虽如此,我不希望MS很快放弃它。
  • 在C#4发布之前,它对后期绑定没有太多支持。你可以用反射来做,但这有点痛苦。即使使用C#4,它仍然是一种基本的静态语言,但它可以在真正有用的地方动态工作。
  • 目前对不变性的支持不多。特别是,C#3引入了一些新功能(自动属性,集合初始化器,对象初始化器),这使得更容易编写可变类型 - 但是对于不可变类型没有相应的功能。 C#4中的命名和可选参数应该在这方面提供帮助,但欢迎提供更多支持。 C#3使函数式代码更容易编码,但这确实需要不变性。
  • 对于桌面应用程序开发,您基本上可以在WinForms和WPF(Windows Presentation Foundation)之间进行选择。后者是更新,设计得更好的IMO,但在这两种情况下,您可能会看到托管应用程序和编写良好的Win32应用程序之间的“快速”略有不同。在启动时尤其如此,而框架正在加载,许多UI代码正在被JIT等等。我个人认为这不是一个障碍,但是......

答案 1 :(得分:2)

除了其他受访者所说的另一个考虑因素是托管.NET应用程序通常比托管PHP应用程序更昂贵,因为各种MS许可证成本。这对您来说可能是也可能不是问题。

答案 2 :(得分:1)

好吧,你必须区分ASP(现在称为经典ASP)和ASP.NET(我想你可以将新版本称为ASP,但它有点令人困惑)。现在。 ASP.NET是一种技术,您可以使用任何.NET语言(如VB.NET或C#)编写Web应用程序。我不会说你在C#中可以做很多事情,你不能用其他语言做。这是图灵完成。

我认为学习C#是一个好主意,因为它是一种非常流行的语言,并且知道另一种语言不会伤害你。当然,您必须意识到您还将学习与C#分开的.NET Framework。

答案 3 :(得分:0)

.Net在企业市场中不断增长,但C#仍然是一种静态的,类型安全的,基于编译的语言。尽管MS正在转向动态语言(如Iron Ruby),但未来Common Language Runtime(.Net的核心)将成为动态语言运行时的类型安全包装,但目前开发范式完全不同

既然你提到了ASP.Net,将来你将面临两个选择:经典平台ASP.Net Web Forms和基于模型 - 视图 - 控制器的平台ASP.Net MVC更接近Ruby On Rails的结构。