前两天从.net 2.0升级到了.net 3.5,开发工具从vs2005转为vs2008
升级前的想法,主要是看到了.net 3.5的新的优良特性:
- 自动属性(Auto-Implemented Properties)
- 隐含类型局部变量(Local Variable Type Inference)
- 匿名类型(Anonymous Types)
- 对象与集合初始化器(Object and Collection Initializers)
- 扩展方法(Extension Methods)
- Lambda表达式和Lambda表达式树 (Lambda Expression and Lambda Expression Trees)
自动属性举例:
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
.net 3.5下新的写法:
public string Name
{
get;
set;
}
隐含类型局部变量举例:
var url = "http://www.svnhost.cn";
var name = "SvnHost开源社区";
var status = false;
匿名类型举例:
var site1 = new { url = "http://www.svnhost.cn", title = "SvnHost开源社区", author = "小灰", qq = "4111852" };
var site2 = new { url = "http://745.cc", title = "实用工具大全", author = "小灰", qq = "4111852" };
site1 = site2;
对象与集合初始化器举例:
User user = new User();
user.Id = 1;
user.Name = "小灰";
user.Age = 22;
.net 3.5下新的写法:
User user = new User { Id = 1, Name = "小灰", Age = 22 };
扩展方法举例:
public static int Int(this HttpRequest request, string key)
{
return int.Parse(request[key]);
}
调用方法:
int id = Request.Int("id");
Lambda表达式和Lambda表达式树举例:
string[] strs = { "http://www.svnhost.cn", "SvnHost开源社区", "4111852", "小灰" };
var q = strs.FirstOrDefault(p => p.IndexOf("svnhost"));
Console.Write(q);
这里使用了一个Linq语法,p => p.IndexOf("svnhost")就是Lambda表达式。
站长小灰也是刚刚接触.net 3.5,现学现卖,还没有深入研究。仅仅做了一个粗略的新特性介绍。有兴趣的朋友可以到google搜索一下,这方面的电子书还不是很多。需要仔细的找,本站下载区也收录了一些,可以去看看。
最后,我大量使用Linq开发了一个很小的bbs功能,很多 地方都用了Linq特性,发现Linq真是好东西,整个BBS系统,一句Sql语句都没有写。这样虽然提高了开发效率,但是Linq归根结底还是生成 Sql语句,我想性能上应该没有存储过程好。而且在并发上似乎也会有问题,当然我的看法也是局限于我目前的知识。也许Linq一样可以解决并发问题。我想肯定是可以解决的,不然这个东西只能开发小型系统了。大的系统要求效率。用Linq会损失很多性能。最后说一句,用Linq开发小型系统超爽呀。可以抛弃Sql语法了。
另外vs2008新特性我不是很了解,只用了我常用的东西。个人感觉对我帮助比较大的东西就是vs2008支持js的智能提示。
再补充一句:如果你不想升级成.net 3.5,你依然可以使用VS2008,VS2008支持.net 2.0,.net3.5的核心也是.net 2.0。你不用担心升级你的项目会有很大风险。
----------------
小猪博客(猪窝) http://www.zhublog.com/
酷友网 http://www.kuiu.cn/