博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说參数传递(泛型托付)
阅读量:7069 次
发布时间:2019-06-28

本文共 1980 字,大约阅读时间需要 6 分钟。

这篇博客重点在于理解,细节之处不再具体介绍.

托付的用处在于匹配,发出的信息,谁匹配类型就接受监听信息.泛型的增加,使托付的用途更加广泛,宽展了托付的參数类型,复用性更加强大.以下我们看看一个简化版的,直接增加类型使用.

实例:依据ID载入信息,返回信息.那么非常久曾经我这样写.代码1:数据库连接版

Private  Table Reslt(stringID){ //调用查询方法返回table.}

半年前我学会这样写,代码2:直接版

private ProductElectricCollection Reslt(string iD){     string sql = string.Format("select * from {0} where code {1}",getTableName(),WhereAction(iD));     return QueryDate(sql); }

这样就返回了集合呀.集合呢.不再是table.入公司不久又变了,略微使用了泛型托付.

简单理解就是将方法增加到托付中,(參数类型匹配),这时候我又改变了写法了,看起来没什么不同,仅仅是加了一个外壳

代码3:直接托付调用方法

public ProductElectricCollection Load(string id){ //參数为string,返回类型为ProductElectricCollection托付,注冊了result方法  Func
message = Reslt;//指向函数指针地址 return message(id);} private ProductElectricCollection Reslt(string iD){ string sql = string.Format("select * from {0} where code {1}",getTableName(),WhereAction(iD)); return QueryDate(sql); }

以上是我们经常使用的托付方式。相信用过的一定熟悉。

这样的写法用了几天。发现有和平台写的有些不同,好像是非常久曾经的写法了,去官网看了看。发现了匿名函数和Lamdba

这些都是托付的写法。

所以能够使用这两种写法。可是写法就相对复杂了。由于加入了中间层。略微变通了

代码4,增加了參数

public ProductElectricCollection Load(string id){this.LoadyByItem(ss=> Reslt(id));}

ss是我们定义的參数。为string类型,制定了我们绑定的函数reslt,实參为id

这里并不会真正的掉用reslt函数。而是在loadByitem中依据指针回调。

LoadByItem就是我们定义的方法參数为函数指针(托付使用,带返回值的)

public ProductElectricCollection LoadyByItem(Func
result){ string id=string.Empty; return result(id);//调用引用的函数 }

这里的result(id),就是调用形參。參数的写法是否大有改变呀。若将该方法抽象,使用泛型T,放到基类中,将其公有化,可继承,这样就大大提高了复用性。简单的抽象TC为自己定义Collection

public TC Load(Action
whereAction){TC result = null;whereAction.NullCheck("whereAction");WhereSqlBuilder bulider = new WhereSqlBuilder();whereAction(bulider); result= InnerLoadByBuilder(bulider.ToSqlString(bulider));return result;}

这样一来就可用继承基类。直接调用该方法了,当然了。sql也是要抽象的,没有业务的关系。

小结:

  • 重点我们要理解不管是传入直接的字符或是传入方法指针,都是同样的,仅仅是写法略微有些改变
  • 改变的写法是要在实际调用中,写入实參,调用方法中写入空的參数,目的就是为了实參传递。

  •  方法传递,或是字符传递。最后都是要运行到sql的(小到能够运行的语句),所以每种写法都是为了适应更好的变化,适应不同情况。避免不必要的直接接触。

转载于:https://www.cnblogs.com/gavanwanggw/p/7084449.html

你可能感兴趣的文章
【★】路由环路大总结!
查看>>
Spring源码学习之:ClassLoader学习(5)-自测
查看>>
awesome-nlp
查看>>
第 102 章 Ntop
查看>>
利用路由器连接别人家的网络
查看>>
TinyXml学习笔记
查看>>
超越存储 遇见未来 HP 3PAR StoreServ存储系列更新
查看>>
工信部:中国物联网产业规模已超9300亿元
查看>>
能源革命为太阳能市场打开了多个缺口?
查看>>
拟态防御或助网络安全实现再平衡
查看>>
理解Spark的核心RDD
查看>>
如何安装pandom : 一个针对Linux的真随机数生成器
查看>>
LeetCode之二叉树问题
查看>>
Vue.js 源码学习笔记
查看>>
社会化分享如何影响你的APP
查看>>
centos下PIL的安装
查看>>
IOST节点计划全面升级: 全球寻找1000位IOST合伙人
查看>>
NSNotificationCenter
查看>>
版本号正则表达式匹配
查看>>
新手入门mysql(一)
查看>>