时间:2016-11-2来源:本站原创作者:佚名

一.类自动属性

1publicclassPerson2{3//自动属性4publicstringName{get;set;}56privateint_age;78publicintage{9get{return_age;}10set{_age=value;}11}12}

Name为类的自动属性,其实跟下面age的定义方法是一样的,只不过是微软自动帮你生成了字段。

二.隐式类型

1staticvoidVar()2{3varperson=newPerson();45varp=person;6}

1.var类型会被编译器根据初始值的类型自动推断出具体的类型。

2.var类型不能做参数。

3.无法将null赋值给var类型。

4.语句中只声明一次变量,声明后不能更改类型。

三、匿名类

1staticvoidW02AnmClass()2{3vard=new{name="张三",age=13};4vard2=new{name=12,age="13"};5vard3=new{name="张三",age="13",gender="男"};6}

1.匿名类本质上是编译器生成的一个泛型类。

2.当匿名类的参数个数一样的时候是共用一个泛型类。

3.当匿名类的参数个数不一样的时候是各自生成不同的泛型类。

4.匿名类初始化的时候一定要赋值。

四、默认值和命名参数

1staticvoidW03DefaultValue()2{3W();4W("李四");5W(age:20);6}7staticvoidW(stringname="张三",intage=18)8{9Personperson=newPerson();10person.Name=name;11person.Age=age;12}

1.当一个方法里面的参数有默认值的时候,可以直接调用方法不用传值,编译器会自动调用参数的值。

2.当方法有默认值时,如果调用的时候只传入第一个参数,那么编译器会把第二个参数设置为默认值。

3.如果需要给某一个参数赋值,书写的格式是参数名:值。

五、对象/集合初始化器

1staticvoidWObject()2{3Personperson=newPerson(){4Name="张三",5Age=};7}8staticvoidWObject()9{10varpersonlist=newListPerson(){11newPerson(){Name="张三",Age=22},12newPerson(){Name="李四",Age=12}13};14}15staticvoidWObject()16{17Person[]arrperson=newPerson[]{18newPerson(){Name="张三",Age=22}19};20}

1.对象/集合初始化器,可以在new一个对象或者集合的时候,直接在后面加{}里面对属性直接赋值或者直接new一个对象给集合。

六、匿名方法(匿名函数、匿名委托)

1staticboolProcess(intp)2{3returnp2;4}56staticvoidW()7{8Listintlist=newListint(){1,2,3,4,5,6,7,8,9};9//直接传入一个方法名称也可以不过这个方法名称的参数以及返回值类型要跟10//publicdelegateboolPredicateinT(Tobj);一样11varnlist=list.FindAll(Process);12foreach(variteminnlist)13{14Console.WriteLine(item);15}Console.WriteLine("=================");18//匿名方法的写法:delegate(编写匿名方法的参数,参数有程序员自己定义){函数的方法体代码}19varnlist2=list.FindAll(delegate(intp){returnp3;});20foreach(variteminnlist2)21{22Console.WriteLine(item);23}24}

七、lambda表达式的推断以及书写方法

1ListPersonpersons=newListPerson(){2newPerson{Name="张三",Age=12},3newPerson{Name="李四",Age=32},4newPerson{Name="王五",Age=44}5};6//使用匿名方法返回符合条件的数据。7varnlistperson=persons.FindAll(delegate(Personperson){returnperson.Age22person.Name.Contains("李");});8//lambda表达式的推断使用goto语句来替换匿名函数=9varnlistperson2=persons.FindAll((Personperson)={returnperson.Age22person.Name.Contains("李");});/*、lambda表达式的推断使用goto语句来替换匿名函数=继续简化、当只有一个参数的时候可以省略()参数的括号,当返回值只有一句语句的时候可以省略return以及{}花括号、当有多个参数的时候需要加上(),当有多条语句的时候需要添加{}每个语句后面加分号;最后返回的语句要加return15*/16varnlistperson3=persons.FindAll(person=person.Age22person.Name.Contains("李"));varnlistperson4=persons.FindAll(person={19person.Age++;20returnperson.Age22person.Name.Contains("李");21});foreach(variteminnlistperson4)24{25Console.WriteLine("名称:{0};年龄:{1}",item.Name,item.Age);26}

八、扩展方法

1///summary2///1.扩展方法必须是一个静态方法3///2.静态方法必须放在静态类中4///3.扩展方法第一个参数必须是this开头,并且指定扩展方法是哪个类型上的5///4.扩展方法只能有指定的类型才能点出来6///5.扩展方法的this后面的参数不属于方法的参数7///6.如果扩展方法跟实例方法同名,先调用实例方法8///7.子类可以调用父类的扩展方法9///8.接口上的扩展方法可以被实现类的对象直接使用10///9.扩展方法的本质,最终还是被编译器编译成了静态类.静态方法()11////summary12staticvoidW()13{14DateTimedt=DateTime.Now;15stringfmtstr=dt.FmtDate();16}

1publicstaticclassExtHelper2{3publicstaticstringFmtDate(thisDateTimedt)4{5returndt.ToString("YYYY-MM-DDHH:MM:ss");6}7publicstaticstringFmtDate(thisDateTimedt,stringstr)8{9returndt.ToString("YYYY-MM-DDHH:MM:ss"+str);10}11}

九、系统内置的委托

1#region系统内置委托2#regionAction委托接收参数无法回值3staticvoidWAction()4{5Listintlist=newListint(){1,2,3,4,5,6};67list.ForEach(i=Console.WriteLine(i));8}9#endregion#regionPredicate泛型委托:接收一个参数,返回bool类型12staticvoidWPredicate()13{14varlist=newListPerson(){15newPerson{Name="张三",Age=12},16newPerson{Name="李四",Age=32},17newPerson{Name="王五",Age=44}18};varnlist=list.FindAll(c=c.Age22);21//获取当前list集合中,名字为张三的对象,如果有多个只返回第一个varperson=list.Find(c=c.Name=="张三");24}25#endregion#regionFunc:接收参数,返回参数,但是不固定28staticvoidWFunc()29{30varlist=newListPerson(){31newPerson{Name="张三",Age=12},32newPerson{Name="李四",Age=32},33newPerson{Name="王五",Age=44}34};varnlist=list.Where(c=c.Age1);37varnlist1=nlist.ToList();38nlist1.ForEach(c=Console.WriteLine(c.Name.ToString()));39}40#endregion#regionSystem.ComparisonT返回一个整数,接收两个同类型的参数43staticvoidWComparison()44{45varlist=newListPerson(){46newPerson{Name="张三",Age=12},47newPerson{Name="李四",Age=32},48newPerson{Name="王五",Age=44}49};list.Sort((p,n)=p.Age-n.Age);52list.ForEach(c=Console.WriteLine(c.Name.ToString()+":"+c.Age.ToString()));53}#endregion56#endregion

十、SQO方法-标准查询运算符

创建两个类

1publicclassPerson2{3publicintTypeID{get;set;}45publicintID{get;set;}6//自动属性7publicstringName{get;set;}89privateint_age;publicintAge{12get{return_age;}13set{_age=value;}14}publicoverridestringToString()17{18return"ID="+this.ID+"名称="+this.Name+",年龄="+this.Age+"所属类别="+this.TypeID;19}20}publicclassPsersonType23{24publicintTypeID{get;set;}25publicstringTName{get;set;}26}

SQO常用方法的使用查询、排序、关联、分组等

1#regionSQO方法-标准查询运算符2#region1where()firstordefult()LastOrDefault方法进行查找操作(链式编程)3staticvoidW()4{5varlist=newListPerson(){6newPerson{Name="张三",Age=12},7newPerson{Name="李四",Age=32},8newPerson{Name="王五",Age=44}9};//利用where查找出list中年龄大于22或者名称叫王五12//链式编程13list.Where(c=c.Age5

c.Name=="王五").ToList().ForEach(c=Console.WriteLine(c.ToString()));//firstordefult()的演示16varperson=list.FirstOrDefault(c=c.Age5

c.Name=="王五");17Console.WriteLine(person.ToString());//获取集合中满足条件的最后一个元素20varperson2=list.LastOrDefault(c=c.Age5

c.Name=="王五");21Console.WriteLine(person.ToString());}24#endregion#region2对集合进行排序(正序和倒序)27staticvoidW()28{29varlist=newListPerson(){30newPerson{ID=1,Name="张三",Age=12,TypeID=1},31newPerson{ID=2,Name="李四",Age=32,TypeID=2},32newPerson{ID=3,Name="王五",Age=44,TypeID=1}33};34//正序35list.OrderBy(c=c.Age).ToList().ForEach(c=Console.WriteLine(c.ToString()));36Console.WriteLine("---------");37//倒序38list.OrderByDescending(c=c.Age).ToList().ForEach(c=Console.WriteLine(c.ToString()));39}40#endregion#region3根据多个字段的组合排序43staticvoidW()44{45varlist=newListPerson(){46newPerson{ID=1,Name="张三",Age=12,TypeID=1},47newPerson{ID=2,Name="李四",Age=32,TypeID=2},48newPerson{ID=3,Name="王五",Age=44,TypeID=1}49};50//多个条件进行正序先按照年龄然后按照ID正序51list.OrderBy(c=c.Age).ThenBy(c=c.ID).ToList().ForEach(c=Console.WriteLine(c.ToString()));//多条件倒序54list.OrderByDescending(c=c.Age).ThenByDescending(c=c.ID).ToList().ForEach(c=Console.WriteLine(c.ToString()));55}56#endregion#region4投影方法(Select)(重点)59staticvoidW()60{61varlist=newListPerson(){62newPerson{ID=1,Name="张三",Age=12,TypeID=1},63newPerson{ID=2,Name="李四",Age=32,TypeID=2},64newPerson{ID=3,Name="王五",Age=44,TypeID=1}65};66//取出list集合里面的部分字段67Liststringnlist=list.Select(c=c.Name).ToList();//重新创建一个新的list集合只包含name和age70list.Select(c=new{N=c.Name,A=c.Age}).ToList().ForEach(c=Console.WriteLine(c.ToString()));71}72#endregion#region5分页方法Skip(skipNum).Take(页容量)Skip():表示跳过集合中的前面多少行75staticvoidW()76{77introwcount=0;78WByPage(1,2,outrowcount).ForEach(c=Console.WriteLine(c.ToString()));79}80staticListPersonWByPage(intpageindex,intpagesize,outintrowcount)81{82varlist=newListPerson(){83newPerson{ID=1,Name="张三",Age=12,TypeID=1},84newPerson{ID=2,Name="李四",Age=32,TypeID=2},85newPerson{ID=3,Name="王五",Age=44,TypeID=1}86};87//给rowcount赋予满足条件的数据总行数88rowcount=list.Count();89//经过第几页跳过跳过多少条90intskipCount=(pageindex-1)*pagesize;91returnlist.Where(c=c.Age1).Skip(skipCount).Take(pagesize).ToList();92}93#endregion#region6连表查询Join96staticvoidW()97{98varlist=newListPerson(){99newPerson{ID=1,Name="张三",Age=12,TypeID=1},newPerson{ID=2,Name="李四",Age=32,TypeID=2},newPerson{ID=3,Name="王五",Age=44,TypeID=1},newPerson{ID=3,Name="王五",Age=44,TypeID=3}};vartypelist=newListPsersonType(){newPsersonType(){TypeID=1,TName="老师"},newPsersonType(){TypeID=3,TName="学生"},newPsersonType(){TypeID=2,TName="保安"}};//利用SQO方法Join()来实现上述业务逻辑varnlist=list.Join(typelist,p=p.TypeID,c=c.TypeID,(p,c)=new{p.Name,p.Age,c.TName}).ToList();nlist.ForEach(c=Console.WriteLine(c.ToString()));}#endregion#region7分组GroupBy()staticvoidW(){varlist=newListPerson(){newPerson{ID=1,Name="张三",Age=12,TypeID=1},newPerson{ID=2,Name="李四",Age=32,TypeID=2},newPerson{ID=3,Name="王五",Age=44,TypeID=1},newPerson{ID=3,Name="王五",Age=44,TypeID=3}};//利用SQO方法进行分组操作list.GroupBy(c=c.TypeID).ToList().ForEach(c={Console.WriteLine("----分组号{0}"+c.Key,c.ToList().Count());c.ToList().ForEach(g=Console.WriteLine(g.ToString()));});}#endregion#endregion

十一、linq的常用方法

1#regionLinq使用方法2#region1Linq实现排序3staticvoidw()4{5varlist=newListPerson(){6newPerson{ID=1,Name="张三",Age=12,TypeID=1},7newPerson{ID=2,Name="李四",Age=32,TypeID=2},8newPerson{ID=3,Name="王五",Age=44,TypeID=1},9newPerson{ID=3,Name="王五",Age=44,TypeID=3}10};11//需求:根据list集合中的age倒序排列后取出pig对象中的Name和Age12//ascending:正序descending:倒序13varorderbyList=(fromcinlist14orderbyc.Agedescending15selectnew{c.Name,c.Age}).ToList();16orderbyList.ForEach(c=Console.WriteLine(c.ToString()));17}18#endregion#region2LinqJoin实现集合的链接查询21staticvoidW()22{23varlist=newListPerson(){24newPerson{ID=1,Name="张三",Age=12,TypeID=1},25newPerson{ID=2,Name="李四",Age=32,TypeID=2},26newPerson{ID=3,Name="王五",Age=44,TypeID=1},27newPerson{ID=3,Name="王五",Age=44,TypeID=3}28};vartypelist=newListPsersonType()31{32newPsersonType(){TypeID=1,TName="老师"},33newPsersonType(){TypeID=3,TName="学生"},34newPsersonType(){TypeID=2,TName="保安"}35};varnlist=(fromcinlist38jointintypelist39onc.TypeIDequalst.TypeID40selectnew{c.Name,c.ID,t.TName}).ToString();}43#endregion#regionLinq分组46staticvoidW()47{48varlist=newListPerson(){49newPerson{ID=1,Name="张三",Age=12,TypeID=1},50newPerson{ID=2,Name="李四",Age=32,TypeID=2},51newPerson{ID=3,Name="王五",Age=44,TypeID=1},52newPerson{ID=3,Name="王五",Age=44,TypeID=3}53};vargroupbylist=(fromcinlist56groupcbyc.TypeID).ToList();groupbylist.ForEach(c=59{60Console.WriteLine("-----分组号="+c.Key);61c.ToList().ForEach(g=Console.WriteLine(g.ToString()));62});}65#endregion66#endregion

来源:







































专业治疗白斑医院
贵阳最好的白癜风医院

转载请注明原文网址:http://www.helimiaopu.com/cxtx/1245.html

------分隔线----------------------------