public class DbObjectModel<T> : DbObjectModel<T, long> where T: DbObjectModel<T, long>
谁能解释一下上面的是什么意思
如 1. DbObjectModel<T>:<T> ?然后是外面的 DbObjectModel,和T有什么关系?
2.DbObjectModel<T, long>
3.where T 是什么意思,作用是什么?
能读懂这段代码的人赶快进来啊 ,谢谢了!~~~~
谁能解释一下上面的是什么意思
如 1. DbObjectModel<T>:<T> ?然后是外面的 DbObjectModel,和T有什么关系?
2.DbObjectModel<T, long>
3.where T 是什么意思,作用是什么?
能读懂这段代码的人赶快进来啊 ,谢谢了!~~~~
lemba表达式吧。
没接触过那谁有最简单的例子可以很清晰的反应出他的作用啊
醒醒,不要看见WHERE就LAMBDA。这标准的继承
T是泛型,WHERE后指明T的范围
比如WHERE T:STRUCT
那么你在用的时候只能用STRUCT而不能用STRING或其他非结构的类型。
where T: DbObjectModel <T, long> 这个是泛型。首先规定一种类型T,这个T是一个实现了DbObjectModel<T,long>的类型,若传的不是这种类型则会出错。然后:后面是继承的超类,这个超类跟子类一样拥有一个相同的数据类型T
习惯性的把LAMBDA和LINQ混在一起看。嘿嘿。
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); List<DbObjectModel<DbObjectModel<int, long>>> M = new List<DbObjectModel<DbObjectModel<int, long>>>(); DbObjectModel<DbObjectModel<int, long>> X = new DbObjectModel<DbObjectModel<int, long>>();
X.TObj.TObj = 1; // int
X.RObj = 2; // long
M.Add(X); M.ForEach(delegate(DbObjectModel<DbObjectModel<int, long>> DM)
{
MessageBox.Show(DM.TObj.TObj.ToString() + " " + DM.RObj.ToString());
});
} public class DbObjectModel<T, R>
{
public T TObj = (T)Activator.CreateInstance<T>();
public R RObj = (R)Activator.CreateInstance<R>();
} public class DbObjectModel<T> : DbObjectModel<T, long> where T : DbObjectModel<int, long>
{
}
}
}
2.这个 DbObjectModel<T>类是继承DbObjectModel<T, long>类的
3. where 限制了构造实例的条件, 就是 T:DbObjectModel <T, long>
4. 条件 T:DbObjectModel <T, long> 意思就是1.里面穿进去的类型参数 这个类型必须是从DbObjectModel<T, long>继承的
http://msdn.microsoft.com/zh-cn/library/bb384067.aspx