1) 隐式类型Var的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
static
void Main( string [] args) { //隐式类型 var
person = new
{name = "小明" ,age= "12" }; //不需要定义类的名称 Console.WriteLine(person.name); //如果使用object,访问不了匿名类的属性name和age,如果想访问的到,可以使用反射! Console.ReadKey(); } |
2)匿名函数和lambda表达式的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
internal
delegate int DemoAdd( int
a, int
b); class
Program { static
void Main( string [] args) { //匿名函数的关键字就是delegate开头的,(类似于javascript的function),后面紧接着函数的参数,后面是函数体 DemoAdd demoAdd = delegate ( int
a, int
b) { return
a + b; }; //以上用Lambda表示式,=>表示成goto DemoAdd lamdaDemoAdd = ( a, b) => { return
a + b; }; DemoAdd lamdaDemoAdd1 = ( a, b) => a + b; Console.ReadKey(); } } |
3)泛型委托
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
internal
delegate int DemoAdd( int
a, int
b); //定义泛型返回值 delegate
T DemoAdd<T>( int
a , int
b); //参数也定义泛型 delegate
T DemoAdd1<T,T1,T2>(T1 a, T2 b); class
Program { static
void Main( string [] args) { //泛型返回值 DemoAdd< string > demoAdd = (a, b) => (a + b).ToString(); //参数类型为String,返回类型是字符串 DemoAdd1< string , string , string
> demoAdd1 = (a, b) => (a + b).ToString(); //参数类型为int,返回类型也是整型 DemoAdd1< int , int , int > demoAdd2 = (a, b) => a + b; } } |
4)Func<T, TResult> 委托 ,可以使用此委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 也就是说,封装的方法必须具有一个通过值传递给它的参数,并且必须返回值。
//Func与Action的区别:Action是没有返回值,Func有返回值 internal delegate TResult Func<in T, out TResult>( T args ); class Program { static void Main(string[] args) { //所用的方法是实例化 Func<T, TResult> 委托,而不是显式定义一个新委托并将命名方法分配给该委托。 //传入参数是字符串,返回值也是字符串 Func<string, string> convertMethod = UppercaseString; string name = "Dakota"; Console.WriteLine(convertMethod(name)); } private static string UppercaseString(string inputString) { return inputString.ToUpper(); } }
原文:http://www.cnblogs.com/chaohome/p/3561238.html