- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从毕业做.NET到现在,有好几年了,自认为只能是达到熟练的水平,谈不上精通。所以,总结一下,自己到底熟练掌握了哪些.NET方面的开发技术,以此对照,看看还有哪些不足,欢迎补充。
1 .NET Framework常见的API要熟练掌握。有些API可能需要多个类型配合使用,也有必要掌握。
IEntity2 clonedEntity = null;
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream memStream = new MemoryStream())
{
formatter.Serialize(memStream, sourceEntity);
memStream.Seek(0, SeekOrigin.Begin);
clonedEntity = (IEntity2)formatter.Deserialize(memStream);
}
?
这个例子是.NET的深拷贝(deep copy)的实现,类似于这样的例子,还有很多。这些API的组合应用是需要掌握的。经过积累后,通常都会有自己的一个Utility类型库。
2 Linq to Object。虽然Linq to SQL已经被抛弃和遗忘,但是Linq to Object还真是一项很重要的技术。 如果没有这项技术,数据的查找和操作的代码会被foreach充满,这样不容易维护,而且有很多代码都是routine代码,可以省略的。
string[] names = { Tom,Dick,Harry,Mary,Jay };
IEnumerablestring query =
from n in names
where n.Contains (a) // Filter elements
orderby n.Length // Sort elements
select n.ToUpper( ); // Project each element
foreach (string name in query)
Console.Write (name + /);
同时,与Linq搭配的技术Lambda技术,可以简化很多代码,这也需要掌握,上面的例子用Lambda技术改写一下
string[] names = { Tom,Dick,Harry,Mary,Jay };
IEnumerablestring query = names
.Where (n = n.Contains (a))
.OrderBy (n = n.Length)
.Select (n = n.ToUpper( ));
foreach (string name in query)
Console.Write (name + |);
曾经有个非常流行的考试题目,考察委托的三种写法,举例如下所示
Listint list = new Listint();
list.AddRange(new int[] { 1, 5, 10, 20 ,33 });
//使用传统委托语法调用FindAll
Predicateint callback = new Predicateint(IsEvenNumber);
Listint evenNumbers = list.FindAll(callback);
//使用匿名方法
Listint evenNumbers = list.FindAll(
delegate(int i)
{
return (i % 2) == 0;
});
//使用Lambda表达式
Listint evenNumbers = list.FindAll(i = (i % 2) == 0);
(代码来自于LINQ之路 3:C# 3.0的语言功能(下))
?
3? .NET 4引入了新的并行编程库。这项技术不同于多线程技术,它是适应多核时代的需要。 来看下面的例子程序
static double ParallelPi()
{
double sum = 0.0;
double step = 1.0 / (double)num_steps;
object monitor = new object();
Parallel.F
文档评论(0)