.NET 中有很多功能。一些语言相关,其他将与框架本身相关并且具有访问/执行/执行 xyz 的能力。所以为了好玩,我想知道社区最喜欢的.NET 或 ASP.NET功能包括哪些?
这是一个社区 wiki 问题,因为它主要用于投票目的,以查看对.NET的各个方面有什么样的响应
具体来说,尝试包括一些关于它的东西,比如代码示例。
示例类别和主题:
- DLR
- 林克
- 表达式
- WPF
- 泛型
- WCF
泛型。非常适合不滚动您自己的容器类。从 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;
}
反思。让我们面对现实吧:没有反射,.NET 只是 C 的追求者。或者,如果我们想大方一点,想要成为 Java 的人——但 Java 有反射,否则闻起来有点像 Pascal 想要成为的人,所以让我们避免这种争论,而只是接受 .NET 非常希望成为一个可移植的汇编程序有足够的元数据使 VB 工作。
我听说人们声称您应该避免使用反射,因为它会减慢您的程序速度并使静态分析工具的生活变得困难......坦率地说,这是一大堆肥料。函数会减慢 C 的速度,但谁会编写没有函数的 C 代码?宏使 C 的静态分析变得困难,但没有宏,C 什么都不是!因此,我敦促您发疯——如果反射让您的生活更轻松,请使用它。哎呀,滥用它。根据您的意愿弯曲您选择的 .NET 语言并向它展示谁是老板 - 使用 Reflection 作为您可信赖的意志弯曲橡木俱乐部。然后啜饮你的冰茶,凝视你的双手,相信没有人敢说你不是工具的主人。
我认为 .NET 中有很多很棒的功能,但我投票支持使该平台成为目前最佳软件技术选择之一的幕后因素:
垃圾收集- 幸福地不知道何时必须释放对象的内存是一个很好的礼物。在其他语言 (C++) 中,如果您自己不清理,则会出现内存泄漏和蓝屏。
即时编译- 编译器在使用前优化每个方法,删除冗余或未优化的代码。
AppDomains - 当 .NET 应用程序死掉时,它不会破坏您的系统。
并行执行和XCopy 部署- 不再有 DLL 地狱。纳夫说。
平台抽象- 该框架隐藏了本机 Win32 Api 的许多版本控制细节。
语言中立- 无论是 VB.NET、C# 还是您喜欢的任何语言,都是 MSIL。能够在 VB.NET 中继承 C# 类非常酷。
互操作性- 能够调用旧版 Win32 API、与 COM+ 互操作等
其他:
我真的必须选择一个吗?
代表;我喜欢编写函数式代码的能力,没有 F# 的痛苦,也喜欢 C++ 的无类型函数指针。再加上非常好的 lambda 语法 (C#),以及对捕获的编译器支持,它们非常棒!我更喜欢 C# 捕获而不是 java 捕获,因为值可以以任何一种方式流动(捕获的是变量,而不是值)。
举个简单的例子——这不是有多痛苦吗?
string name = // something interesting
var item = list.Find(x => x.Name == name && x.Status == Status.Open);
Linq To SQL和ADO.NET 实体框架,精彩的功能......
垃圾收集器。一段时间后,你认为这是理所当然的。
ASP.NET 状态管理和 WebForms。
WebForms 之所以名声不好,主要是因为很多人没有正确使用它们,也不了解应该如何使用状态。
正确使用时,在不需要的地方禁用 ViewState,在应该完成时重新填充数据等 WebForms 使 Web 开发比使用 PHP 或 ASP 时容易得多。
没有特别的顺序
反射
Linq
Lambda
见鬼,在某些情况下,我将所有三个组合在一个语句中。
代码隐藏文件
..从经典 ASP 时代(和 php?)迈出一大步
泛型和表达式树
属性(Java:注释)。
我真的没有任何我会称之为“最喜欢”的语言功能。我的意思是我喜欢泛型,我喜欢 LINQ 以及其他许多东西,但它们都是对在其他语言中效果更好的东西的半生不熟的模仿。
示例:泛型很棒,但远不如 C++ 模板强大或有用。示例 2:LINQ 扩展方法很棒,但远不如 ruby 中的开放类 + 普通旧方法强大或有用。
等等等等。
老实说,我最喜欢 .NET 的地方在于它的速度和部署模型。能够使用所有这些半生不熟但仍然很棒的功能比根本无法使用它们要好得多,因为运行时速度非常慢(例如 ruby),或者因为除非他们使用完全相同,否则没有人可以加载您的 dll带有某些标志的疯狂编译器在发布模式下的变体(例如 C++)
ADO.NET,特别是与 DataAdapter 一起使用的强类型数据集。它使与数据库和存储过程交互的代码管理变得轻而易举。
Windows Communication Foundation (WCF)是我最喜欢的 .NET 功能。这是从普通 Web 服务向前迈出的一大步。它还包含越来越流行的 REST 设计。
GDI+
图形过去很难做到。使用 GDI+,它变得无痛。而且里面有很多功能。Matrix、Path、Transparency、SmoothingMode 之类的东西很棒,而且玩起来很有趣。
如果这还不够,您还可以使用 DirectDraw 或 Direct3D。
组合:委托 + 匿名方法 + Lambda 表达式