你在.NET中最喜欢的功能是什么?

时间:2008-10-26 01:52:30

标签: .net asp.net favorites

.NET中有很多功能。一些语言相关,其他语言将与框架本身相关并且具有访问/执行/执行xyz的能力。为了好玩,我想知道 .NET或ASP.NET 社区的最喜欢的功能包括哪些内容?

这是一个社区维基问题,因为它主要用于投票目的,以查看 .NET 的所有方面的响应类型

具体而言,尝试像代码示例一样包含一些内容。

示例类别和主题:

  • DLR
  • LINQ的
  • 表达式
  • WPF
  • 泛型
  • WCF

17 个答案:

答案 0 :(得分:14)

泛型。非常适合不滚动自己的容器类。自C#2.0起可用。

public T Remove<T>(T item) {
  foreach (T t in this.list) {
    if (t.equals(item)) {
      list.delete(t);
      return t;
    }
  }
  return null;
}

答案 1 :(得分:11)

<强>反射即可。让我们面对现实吧:没有反思,.NET只是一个想成为的人。或许,如果我们想要慷慨,一个Java想成为 - 但Java有反思,有点像Pascal想要的其他方式,所以让我们避免这个论点,只是接受.NET想要成为一个便携式汇编程序有足够的元数据使VB工作。

我听说有人声称你应该避免使用Reflection,因为它会减慢你的程序并使静态分析工具的生活变得困难......坦率地说,这是一堆粪便。功能会降低C值,但谁会编写没有函数的C代码?宏使C的静态分析变得困难,但如果没有宏,C就没有了!因此,我敦促你坚持 - 如果反射让你的生活更轻松,那就使用它。哎呀,虐待它。根据自己的意愿弯曲您的.NET选择语言并向他们展示谁是老板 - 将Reflection作为您可信赖的橡木俱乐部将会弯曲。然后啜饮你的冰茶,凝视你手中的作品,相信没有人敢说你不是你工具的主人。

答案 2 :(得分:8)

我认为.NET中有很多很棒的功能,但我的投票是针对那些让这个平台成为最佳软件技术选择之一的东西:

  • 垃圾收集 - 对于何时必须取消分配对象的内存非常无知是一件很棒的礼物。在其他语言(C ++)中,如果您不自行清理,则会出现内存泄漏和蓝屏。

  • 及时编译 - 编译器在使用前优化每个方法,删除多余或未经优化的代码。

  • AppDomains - 当.NET应用程序终止时,它不会破坏您的系统。

  • 并排执行 XCopy部署 - 不再有DLL地狱。努夫说。

  • 平台抽象 - 该框架隐藏了本机Win32 Api的许多版本控制细节。

  • 语言中立 - 无论是VB.NET,C#还是您喜欢的任何语言,都是MSIL。能够在VB.NET中继承C#类非常酷。

  • 互操作性 - 能够调用旧版Win32 API,与COM +互操作等

其他:

  • 如前所述,反思是杀手。
  • Xml Configration支持远远优于Java的属性文件语法。

我真的必须选一个吗?

答案 3 :(得分:7)

代表;我喜欢编写功能样式代码的能力,没有F#的痛苦,以及C ++的无类型函数指针。再加上非常好的lambda语法(C#),以及编译器对捕获的支持,它们非常棒!我更喜欢C#capture到java捕获,因为值可以以任何一种方式流动(捕获变量而不是值)。

作为一个微不足道的例子 - 这不痛苦吗?

string name = // something interesting
var item = list.Find(x => x.Name == name && x.Status == Status.Open);

答案 4 :(得分:4)

Linq To SQLADO.NET Entity Framework,精彩的功能...

答案 5 :(得分:3)

垃圾收集器。一段时间后你会把它视为理所当然。

答案 6 :(得分:2)

ASP.NET状态管理和WebForms。

WebForms是一个糟糕的名字,主要是因为很多人没有正确使用它们而且不了解应该如何使用状态。

如果使用正确,ViewState在不需要的地方被禁用,应该完成数据重新填充等等WebForms使Web开发比使用PHP或ASP时更容易。

答案 7 :(得分:2)

代码隐藏文件

..从经典ASP时代迈出了一大步(和php?)

答案 8 :(得分:2)

没有特别的顺序

反射
LINQ
兰巴达

哎呀,有些情况下我把所有三个结合在一个声明中。

答案 9 :(得分:1)

泛型和表达式树

答案 10 :(得分:1)

属性(Java:Annotations)。

答案 11 :(得分:0)

组合:代表+匿名方法+ Lambda表达式

答案 12 :(得分:0)

<强> GDI +

以前的图形很难做到。使用GDI +它变得无痛。它有很多功能。像Matrix,Path,Transparency,SmoothingMode这样的东西很棒,而且非常有趣。

如果这样做不够,你也可以使用DirectDraw或Direct3D。

答案 13 :(得分:0)

ADO.NET,与DataAdapters一起使用的特别强类型的DataSet。它使代码管理能够轻松地与数据库和存储过程连接。

答案 14 :(得分:0)

  • LINQ
  • 事实上一切都归IL所有,这意味着你可以在它上面实现任何语言,并获得非常少的泛型和LINQ等
  • WF - 我知道这很复杂,并不是最好的实现,但如果你花时间,它会发现它确实能够很好地满足它的目的。

答案 15 :(得分:0)

Windows Communication Foundation(WCF)是我最喜欢的.NET功能。这是普通Web服务向前迈出的一大步。它还包含越来越受欢迎的REST设计。

答案 16 :(得分:0)

我真的没有任何我称之为“最爱”的语言功能。我的意思是我喜欢泛型,我喜欢LINQ,还有很多其他的东西,但它们都是半生不熟的模仿其他语言的东西。

示例:泛型很棒,但远不如C ++模板那么强大或有用。 示例2:LINQ扩展方法很棒,但在ruby中远不如开放类+普通旧方法那么强大或有用。

依此类推。

说实话,我最喜欢.NET的是它的速度部署模型。能够使用所有这些半生不熟但仍然很棒的功能是无法优先的根本不能使用它们,因为运行时很慢(例如ruby),或者因为没有人可以加载你的dll,除非他们使用完全相同的在发布模式下使用某些标志(例如C ++)的疯狂编译器的变体