6.18上课以及作业感悟

1.泛型

  泛型将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候

  使用泛型可以最大限度地重用代码,保护类型的安全以及调高性能

  可以创建泛型接口、泛型类、泛型方法

  使用方式如下所示:


DemoGeneric<int> demo = new DemoGeneric<int> ();

如果实例化泛型类型的参数相同,那么JIT编译器会重复使用该类型

C#的泛型采用“基类,接口,构造器,值类型/引用类型”的约束方式来实现对类型能数的“显式约束”



委托是事件的基础。

必须使用具有兼容返回类型和输入参数的方法或lambda表达式实例化委托

通过将委托与命名方法或匿名方法关联,可以实例化委托。


泛型委托支持在委托返回值和参数上应用参数类型,这些参数类型同样可以附带合法的约束。

如:

delegateboolPredicate<T>(T value);
class x {
  staticbool F(inti){..}
  staticbool G(strings){..}
  static void Main()
 {
  Predicate<string> p2= G;
  Predicate<int> p1 = newPredicate<int>(F);
 }
}


2.Lambda表达式

Lambda表达式是一种可用于创建委托或表达式目录树类型的匿名函数。 通过使用lambda表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数

Lambda表达式对于编写LINQ查询表达式特别有用

若要创建Lambda表达式,需要在Lambda运算符=>左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,lambda表达式x => x * x指定名为x的参数并返回x的平方值


仅当lambda只有一个输入参数时,括号才是可选的;否则括号是必需的。括号内的两个或更多输入参数使用逗号加以分隔


Func<T,TResult>委托:T为参数类型,TResult为返回值类型


Lambda表达式树:详情参照

http://msdn.microsoft.com/zh-cn/library/bb397951.aspx


3.LINQ

LINQ,语言集成查询(Language Integrated Query)是一组用于c#Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据

亦可对数组、List等进行操作


例如:

var result =  from a in db.table

                      where  a.id == 1

                      order by  a.id

                      select a;


var result1 = from a in array

                       where a>3

                       select a;


3.在完成编程作业解决问题时补充的知识


关于泛型的静态成员问题:

其中使用类型参数的构造类型,比如List<T>被称为开放构造类型(open constructed type)
而不使用类型参数的构造类型,例如List<int>被称为封闭构造类型(closed constructed type)。
特别要强调的是不同类型参数的封闭构造类型之间是不共享静态成员变量的。


List的元素添加问题

在添加元素之前,List并没有对内容进行复制,它只是保存了元素的地址。所以,若List添加一个元素后,直接对元素进行修改并重新添加,就会把前面已经添加的元素都一起修改了,就会出现添加后元素个数仍然增加但元素却都变一样的状况。解决方法很简单,只要每次添加元素,都保证那元素师师new出来的,而不是沿用之前的即可。

                       

                      


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值