首页 新闻 会员 周边

aspx中有些代码看不懂。

0
[已解决问题] 解决于 2017-07-31 17:31

首先我通过这些代码调整进入了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

你猜丶的主页 你猜丶 | 初学一级 | 园豆:183
提问于:2017-07-25 17:32
< >
分享
最佳答案
1

T表示是泛型, 如果你打过扑克一定知道什么是赖子(这样解释不知道是否能懂)

Update(T _T)表示这个方法接受一个泛型参数,通常的方法定义会指定参数类型,如你说的Update(Info model ),但是这样比较死,就是这能传这个类型的参数,别的类型就不能了,定义成T,那么Update的参数可以是Info model ,detail model ...等,只有数据结构类似都是通用的

奖励园豆:5
顾星河 | 大侠五级 |园豆:7173 | 2017-07-25 17:44

使用泛型定义参数的好处和使用弱类型定义一个变量一样,如:var test; test这个变量此时是弱类型,可以赋值int类型,也可以赋值string,(test=0,或者test="0"),但是如果你定义了int test;那么test=0可以,test="0"就会报错.

顾星河 | 园豆:7173 (大侠五级) | 2017-07-25 17:47

BusinessBase<T> where T : new() 这一句,有两个约束,使用BusinessBase的时候必须指定一个泛型T,必须实例化BusinessBase,否则编译不通过...

顾星河 | 园豆:7173 (大侠五级) | 2017-07-25 17:49

@冷星淡月: var定义变量不是弱类型

爱与正义的 | 园豆:200 (初学一级) | 2017-07-25 18:09

@爱与正义的: 不是? 来  你来给我科普科普

顾星河 | 园豆:7173 (大侠五级) | 2017-07-26 08:56

@冷星淡月: https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/var

爱与正义的 | 园豆:200 (初学一级) | 2017-07-26 20:06

@爱与正义的: 文档上说的是隐式类型,与之对应的是显式类型;这和我们平时说的弱类型和强类型不是一个理?

顾星河 | 园豆:7173 (大侠五级) | 2017-07-27 09:25
其他回答(4)
1

百度:c# 泛型  泛型约束

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-25 17:40
0

泛型的学习链接:

http://www.cnblogs.com/ottox/archive/2009/03/02/1401307.htm

http://www.cnblogs.com/arxive/p/6179972.html

金琥 | 园豆:2605 (老鸟四级) | 2017-07-26 10:10
0

你猜,这个相当于变量类型的占位符

qsy | 园豆:22 (初学一级) | 2017-07-27 11:44
0

可怜的骚年。。

Постой! | 园豆:1084 (小虾三级) | 2017-07-28 16:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册