.Net正在增加我的开发时间 - 我错过了什么吗?

时间:2009-04-23 00:00:36

标签: c# .net

我最近开始玩C#,但我发现它非常令人沮丧。似乎每次我想添加我认为是一个简单的控件,我最终要么在网上搜索,要么自己编写。我只是觉得我花了更多的时间来重新创建控件以使它们按照应有的方式工作,而实际创建应用程序的时间则更少。

例如:In another question,我问是否可以删除组合框上的边框;我认为应该在控件中构建一些东西,但是我必须为这个简单的改动建立我自己的控件。

我对C#/ .net太新了,还是我只是期待太多?我知道我喜欢C#所以不要因为这种感觉而咬我的头,只是帮助我理解我所缺少的东西,以及我是否应该继续学习和使用C#。

9 个答案:

答案 0 :(得分:12)

今天我花了4个多小时跟踪C ++程序中的8字节内存泄漏。涉及到线程并且附加调试器会改变线程时序,因此我甚至无法做到像打破Nth alloc那样简单的事情来查看泄漏的位置。另外,我通常知道在分配内存的两个事件之间。不幸的是,两个线程都认为这是分配大量8字节大小对象的好时机。在调查结束时,我发现COM指针上的引用计数错误导致泄漏。

不必为了这样的调查而拔掉你的头发,这就是为什么你应该转移到C#。

答案 1 :(得分:6)

  

例如。在另一个问题中,我问是否可以移除组合框上的边框;我认为应该在控件中构建一些东西,但是我必须为这个简单的改动建立我自己的控件。

当然,您无法删除组合框上的边框。它们是 Win32 控件,它们必须遵循Win32的规则。这包括给予操作系统和用户,而不是应用程序控制样式。

如果你想在Windows上完全设置样式,那么你需要查看WPF。

答案 2 :(得分:6)

我认为你的真正含义是:

.NET上的Windows窗体正在增加我的开发时间 - 我错过了什么吗?

我认为你 缺少一些东西:

  • 开放思想 - 使用任何新的编程语言不仅有新的语法,还有新的范例。如果你来自C ++范例,例如垃圾收集可能听起来“太自动”,你想要有更多的控制但是唉,你必须放手。每当你从一个范例跳到另一个范例时,先决条件总是能够忘掉你一直知道的东西。
  • Windows控件与Web控件不同 - 我已经检查了您之前的问题,看起来您已经来自VBScript,这可能意味着您使用Office或ASP Classic。可以说,当你在网络中时,你对控件的需求很容易让人觉得对Windows更加困难 - Windows 设计得很容易修改。这就是制作WPF / Silverlight的原因。
  • 生产力是学习能力的函数 - 在那里,我说了。它可能会受到伤害,但是,如果你有冷嘲热讽或敌意阻碍你的学习过程,你只会很快就会变得富有成效。如果你已经习惯了不必学习新东西,那么你也很快就会变得富有成效。如果你认为自己非常善于学习新事物,那么你将找到通过这种语言提高工作效率的方法 - 然后然后我们可以讨论你的论点相对于开发时间的优点。 / LI>

答案 3 :(得分:4)

任何新技术最初都有一个实质性的学习曲线,有些学习曲线比其他学习曲线更高。我想你会看到,随着你获得更多的经验,这些事情变得更加容易。 C#具有强大的功能,可以利用.Net架构,但很多时候需要时间来真正欣赏。 C#也在不断变化和发展,以允许新的编码风格(新版本包含来自函数编程的许多影响),使其既流行又强大。坚持下去并继续学习。

答案 4 :(得分:3)

听起来你只是新手。它不是C#,它是.net框架的问题。例如,如果你使用VB.net,你可能会遇到同样的问题。

当我从经典ASP转到ASP.net时,我经历了这个问题。半年左右的时间,我觉得在ASP.net中我想做的事情在经典ASP中要容易得多。最终消失了。现在,当我尝试学习ASP.net MVC时,我又要经历它。在ASP.net中我可以在5分钟内完成的事情花了我几天的时间在ASP.net MVC中找到答案。

在您的情况下,听起来您使用的是Windows窗体。你之前是在使用winforms(即VB6)吗?如果您想要更多地控制样式,可能需要查看WPF。

答案 5 :(得分:3)

你不是第一个,也不是最后一个拥有这种观点的开发者。在我看来,每次我需要做一些不属于演示的东西时,我不得不花费数小时试图找出如何完成一项小任务。我很沮丧的是ASP.NET Web控件。

话虽这么说,我发现一旦我克服了(陡峭的恕我直言)控制开发的学习曲线,我的许多挫折都被消除了。我觉得使用继承和覆盖虚拟成员来创建新行为是一种非常干净的方法。此外,它还可以创建非常容易重复使用的输出。使用面向对象的做法对我来说似乎总是比在整个地方粘贴JavaScript代码段更好。

微软在提供许多基本控件方面做得很好,开箱即用,但每个应用程序似乎总是需要一些缺失的东西。我建议学习控制开发,或者尽可能寻找第三方解决方案。有许多公司只是为了填补空白而存在。无论哪种方式,我都不会根据默认控件集判断整个语言。

答案 6 :(得分:2)

是。你错过了一些东西 - 使用你正在使用的工具的经验。

例如,几个月前我决定我的下一个项目将在ASP.NET MVC中。我已经做了几年的WebForms并且已经使用RubyOnRails涉及几个个人应用程序。 MVC符合我提高应用程序可测试性的愿望,而且我更喜欢编写自己的HTML。

尽管我有使用ASP.NET,C#以及在RoR中使用MVC的经验,但我仍需要花一些时间来匹配我对WebForms的速度。我觉得我不得不花费所有时间来寻找如何做的事情。现在,几个月后,我觉得我能够像以前一样快速地发展。更重要的是,我知道各种范例,并且在面对与之前解决的类似问题时可以轻松应用它们。我还在构建一组可以反复使用的扩展,片段和组件。

我建议你给C#/ .NET一个机会足够长的时间来克服不可避免的早期斗争,然后决定它是否是技术问题。

答案 7 :(得分:1)

难道你想说的不是常见的吗?大多数GUI开发人员遵循某种人机界面指南,以便他们的应用程序与所使用的操作系统的窗口管理器很好地配合。它有助于用户体验。大多数GUI元素都是考虑到这一点而设计的。所以,可能是你试图让你的界面与大多数界面完全不同,因此,你发现你必须做一些自定义的工作。这是正常的。

答案 8 :(得分:0)

取决于你来自哪里。我发现c#非常有效。

我很少使用其他控件,因为它们通常不能100%用于我的用例,并且它们会在您的应用上创建依赖关系。

因此,当您想要将项目升级到c#4而不能,因为控件X Y和Z在c#4中不起作用...你的SOL。

因此,我只需先点击并编写自己的控件,以免造成较少的悲伤。