首先我通过这些代码调整进入了Update()方法。
Info model =new Info(); model.Id=txtId.Text; //Id model.DocumentNo=txtDocumentNo.Text; //文件编号 ... ContactsDocument bus = new ContactsDocument(); int result = bus.Update(model);//model是个实体类,里面是封装的变量。
然后看到是这样一个奇怪的方法
public int Update(T _T) { return ORMHelper.UpdateModelById(_T, DbHelper,null); }
T??这是什么鬼,我看到一脸懵逼,_T是正常获取到了model值,我F12找到T的定义。
What??这是什么鬼?好复杂,根据我的研究这应该是打开数据库,但是
public class BusinessBase<T> where T : new()
这串代码看不懂啊,怎么会是这个样子的?而且Update()方法中,正常不应该是
Update(Info model )?怎么会是个T
T表示是泛型, 如果你打过扑克一定知道什么是赖子(这样解释不知道是否能懂)
Update(T _T)表示这个方法接受一个泛型参数,通常的方法定义会指定参数类型,如你说的Update(Info model ),但是这样比较死,就是这能传这个类型的参数,别的类型就不能了,定义成T,那么Update的参数可以是Info model ,detail model ...等,只有数据结构类似都是通用的
使用泛型定义参数的好处和使用弱类型定义一个变量一样,如:var test; test这个变量此时是弱类型,可以赋值int类型,也可以赋值string,(test=0,或者test="0"),但是如果你定义了int test;那么test=0可以,test="0"就会报错.
BusinessBase<T> where T : new() 这一句,有两个约束,使用BusinessBase的时候必须指定一个泛型T,必须实例化BusinessBase,否则编译不通过...
@冷星淡月: var定义变量不是弱类型
@爱与正义的: 不是? 来 你来给我科普科普
@冷星淡月: https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/var
@爱与正义的: 文档上说的是隐式类型,与之对应的是显式类型;这和我们平时说的弱类型和强类型不是一个理?
百度:c# 泛型 泛型约束
泛型的学习链接:
http://www.cnblogs.com/ottox/archive/2009/03/02/1401307.htm
http://www.cnblogs.com/arxive/p/6179972.html
你猜,这个相当于变量类型的占位符
可怜的骚年。。