C#3.0
phqm
有师傅多好!
展开
-
隐含类型局部变量
var i = 5;var h=23.56;var s = “C Sharp";var intArr = new[] {1,2,3,4} ;//数组中的项类型不能不同var a = new[] { 1, 10, 100, 1000 };// int[]• var 为关键字,可以根据后面的初始化语句自动推断类型• 初始化语句必须为表达式,且编译时可以推断类型。• var声明的仅限于局部变量,亦可以用原创 2008-02-09 20:18:00 · 638 阅读 · 0 评论 -
查询表达式解析
查询表达式解析(1)IEnumerable query = from s in nameswhere s.Length == 5orderby sselect s.ToUpper();在语义上等同于如下“方法风格(基于方法)的查询”:IEnumerable query = names.Where(s => s.Length == 5).OrderBy(s => s).Select(s => s.T原创 2008-02-10 21:57:00 · 796 阅读 · 0 评论 -
初识LINQ表达式
using System;using System.Collections.Generic;using System.Linq;class app{ static void Main() { string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris"原创 2008-02-10 20:11:00 · 746 阅读 · 0 评论 -
LINQ简介
LINQ简介• OO(面向对象)以外的疆域:信息的访问与整合。关系数据库与XML为其中的典型应用。• .NET Language Integrated Query (LINQ):不采用特定於关系数据库或者XML的专有方案,而采用通用方案来解决各种信息源的访问与整合问题。• 在LINQ中,查询成为编程语言的一个组成部分,这使得查询表达式可以得到很好的编译时语法检查,丰富的元数据,智能感知等强类型语言原创 2008-02-10 20:08:00 · 619 阅读 · 0 评论 -
LINQ简介
LINQ简介• OO(面向对象)以外的疆域:信息的访问与整合。关系数据库与XML为其中的典型应用。• .NET Language Integrated Query (LINQ):不采用特定於关系数据库或者XML的专有方案,而采用通用方案来解决各种信息源的访问与整合问题。• 在LINQ中,查询成为编程语言的一个组成部分,这使得查询表达式可以得到很好的编译时语法检查,丰富的元数据,智能感知等强类型语言原创 2008-02-10 20:08:00 · 671 阅读 · 0 评论 -
Lambda表达式与委托类型
Lambda表达式与委托类型 Lambda表达式L可以被转换为委托类型D,需要满足以下条件:• L和D拥有相同的参数个数。• L的参数类型要与D的参数类型相同。注意隐式类型要参与类型辨析。• D的返回类型与L相同,无论L是表达式,还是语句块。原创 2008-02-10 19:45:00 · 642 阅读 · 0 评论 -
Lambda表达式格式要点
Lambda表达式格式要点• Lambda表达式的参数类型可以忽略,因为可以根据使用的上下文进行推断。• Lambda表达式的主体(body)可以是表达式,也可以是语句块。•Lambda表达式传入的实参将参与类型推断,以及方法重载辨析。•Lambda表达式表达式和表达式体可以被转换为表达式树。原创 2008-02-10 19:43:00 · 739 阅读 · 0 评论 -
Lambda表达式格式
Lambda表达式格式为:(参数列表)=>表达式或者语句块 可以有多个参数,一个参数,或者无参数。参数类型可以隐式或者显式。例如:(x, y) => x * y //多参数,隐式类型=> 表达式x => x * 10 //单参数, 隐式类型=>表达式x => { return x * 10; } //单参数,隐式类型=>语句块(int x) => x * 10 // 单参数,显式类型=>表达式原创 2008-02-10 19:35:00 · 1068 阅读 · 0 评论 -
对象与集合初始化器
对象与集合初始化器public class Point {int x, y;public int X { get { return x; } set { x = value; } }public int Y { get { return y; } set { y = value; } }}var a = new Point { X = 0, Y = 1 };相当于:var a = new Poin原创 2008-02-09 21:09:00 · 713 阅读 · 0 评论 -
C# 3.0语言主要增强
C# 3.0语言主要增强• 隐含类型局部变量• 扩展方法• 对象与集合初始化器• 匿名类型• Lambda表达式• 查询表达式( LINQ )• 表达式树原创 2008-02-09 21:23:00 · 566 阅读 · 0 评论 -
匿名类型
var p1 = new { Name = "Lawnmower", Price = 495.00 }var p2 = new { Name = "Shovel", Price = 26.95 };p1 = p2;• 可以使用new关键字调用匿名初始化器创建一个匿名类型的对象。• 匿名类型直接继承自System.Object。• 匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。原创 2008-02-09 21:20:00 · 613 阅读 · 0 评论 -
扩展方法
public static class Extensions{public static void Foo(this string s) {…}}String s=“Hello,World”;s.Foo();扩展方法允许我们在不改变源代码的情况下扩展(即添加)现有类型中的实例方法。 扩展方法要点• 扩展方法的本质为将实例方法调用在编译期改变为静态类中的静态方法调用。• 注意扩展方法的优先级:现原创 2008-02-09 20:58:00 · 445 阅读 · 0 评论 -
查询操作符与扩展方法解析
查询操作符与扩展方法解析(1)查询操作符是LINQ中的另外一项重要设施,LINQ使用扩展方法来定义查询操作符,例如where操作符:namespace System.Linq {public static class Enumerable {public static IEnumerable Where(this IEnumerable source, Func predicate) {forea原创 2008-02-10 22:23:00 · 851 阅读 · 0 评论