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.   

    这是C#中的新特性
    lemba表达式吧。
      

  2.   

    lemba表达式?
    没接触过那谁有最简单的例子可以很清晰的反应出他的作用啊
      

  3.   

    where是要符合其后面类型的。
      

  4.   


    醒醒,不要看见WHERE就LAMBDA。这标准的继承
    T是泛型,WHERE后指明T的范围
    比如WHERE T:STRUCT
    那么你在用的时候只能用STRUCT而不能用STRING或其他非结构的类型。
      

  5.   

    public class DbObjectModel <T> : DbObjectModel <T, long> 
                                   where T: DbObjectModel <T, long> 这个是泛型。首先规定一种类型T,这个T是一个实现了DbObjectModel<T,long>的类型,若传的不是这种类型则会出错。然后:后面是继承的超类,这个超类跟子类一样拥有一个相同的数据类型T
      

  6.   

    竟然有人说这是lamda表达式,还有人说where和lamda有关系晕死不过就是一个泛型继承罢了,where是用来对泛型参数进行约束用的就是DBOjectModel这个类的泛型参数T于DBOjectModel<T,Long>中的泛型参数T类型保持一致。
      

  7.   

    lamda表达式里面哪来的where,不理解。(a,b)=> {return a + b;} 这个才是lamda表达式
      

  8.   

    where 后面的是T类要实现的接口
      

  9.   


    习惯性的把LAMBDA和LINQ混在一起看。嘿嘿。
      

  10.   

    using System;
    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>
            {
            }
        }
    }
      

  11.   

    public class DbObjectModel <T> : DbObjectModel <T, long> where T: DbObjectModel <T, long> 1.public class DbObjectModel<T> 是类申明 T是要传进去的参数 Type类型
    2.这个 DbObjectModel<T>类是继承DbObjectModel<T, long>类的
    3. where 限制了构造实例的条件,  就是 T:DbObjectModel <T, long>
    4. 条件 T:DbObjectModel <T, long> 意思就是1.里面穿进去的类型参数 这个类型必须是从DbObjectModel<T, long>继承的
      

  12.   

    这是一个泛型类派生另一个泛型类...后面的where部分叫做泛型类型约束...跟lamda一点关系都没有,跟接口也没关系...去看MSDN...
    http://msdn.microsoft.com/zh-cn/library/bb384067.aspx