1匿名类:没有名字的类!
var obj = new { name = "zhangsan", id = 5 };
Console.WriteLine(obj.id);
Console.WriteLine(obj.name);
var objt = new { dd = 1, xx = "t", fd = false };
Console.WriteLine(objt.fd);
Console.WriteLine(objt.dd);
Console.WriteLine(objt.xx);
2类初始化器:
先定义一个类:
class Person
{
public string Name;
public int ID;
}
下面就是对Person类初始化,只是在实例化的时候进行对对象进行赋值。
List<Person> list = new List<Person>() {
new Person() { Name ="zhangsan",ID=1},//Person后面的括号可以省略。
new Person(){Name="lisi",ID=2},
new Person{Name="wangwu",ID=3
}};
foreach (var it in list)
{
Console.WriteLine(it.Name + ":" + it.ID);
}
输出:
zhangsan:1
lisi:2
wangwu:3
3.lambda:本质就是一个匿名方法。
为了理解lambda,下面先来一个delegate:
public delegate int FuncSummary(int a, int b);
public delegate int sumData(int a);
class Program
{
static void Main(string[] args)
{
FuncSummary func = delegate(int a, int b) { return a + b; };//匿名函数
Console.WriteLine(func(1, 2));
FuncSummary func1 = (int a, int b) => a + b;//lambda 本质是一个匿名方法;
Console.WriteLine(func1(1, 3));
FuncSummary func2 = (a, b) => a + b;//int 也可以省略
Console.WriteLine(func2(3, 4));
//sumData f = a => a * 10;//1
sumData f = b => b * 10;//2 ;// 1 和 2比较之下,可以说明=>号前面可以放任意参数;对于b这个参数的个数和类型,是有委托定义时参数的个数和类型所决定的;
Console.WriteLine(f(100));
}
4.对于lambda的简单应用:
List<string> listStr = new List<string>() { "1", "2", "3", "4", "5" };
// listStr的FindAll方法中传入 Predicate<T> match 这个东西是一个委托类型,所以在这个方法中可以传入一个lambda!
//传入参数为泛型T,在listStr.FindAll()的这个方法的参数中Predicate<string> match,返回一个list<string>集合;
var listData = listStr.FindAll(a => int.Parse(a) > 2);
foreach (var item in listData)
{
Console.WriteLine(item);
}
---
public delegate string Func(int a, int b);
static void Main(string[] args)
{
Func sum = (c, b) =>
{
if (c > b)
{
return (c + b).ToString();
}
else
{
return (c - b).ToString();
}
};
Console.WriteLine(sum(1, 2));
Console.ReadKey();
}
到此可以了,这个东西在于理解,理解后就好了!
////FindAll();为传入一个listStr中的string类型,返回list<T>类型的数据;
//var data = listStr.FindAll(delegate(string strTemp) { if (int.Parse(strTemp) > 2)return true; else return false; });
//foreach (var item in data)
//{
// Console.WriteLine(item.ToString());
//}