一个基础类方面的问题

poptang2 2009-12-21 11:52:20
public abstract class BaseProvider<EntityType, CollectionType>
where CollectionType : List<EntityType>, new()
where EntityType : new()
{
。。。。
}

这是个抽象类,请教一下,这个类的定义是怎么样的?比如where关键字是什么意思,:号是什么意思?
...全文
159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2009-12-23
  • 打赏
  • 举报
回复
C#泛型
http://hi.baidu.com/brady_home/blog/item/53a36809d68780aa2fddd467.html

很不错的帖子,参考一下。
liangchencf 2009-12-22
  • 打赏
  • 举报
回复
对啊,就是为了这个约束啊
[Quote=引用 9 楼 vrhero 的回复:]
难道IList <T>不可以实例化?new()约束只是为了声明该泛型类型可以在泛型方法体内实例化...

所以该示例CollectionType的写法纯属多余...
[/Quote]
vrhero 2009-12-22
  • 打赏
  • 举报
回复
难道IList<T>不可以实例化?new()约束只是为了声明该泛型类型可以在泛型方法体内实例化...

所以该示例CollectionType的写法纯属多余...
liangchencf 2009-12-22
  • 打赏
  • 举报
回复
还是有点区别的吧IList <T>和where TEntityCollection : IList <TEntity>, new() 比,TEntityCollection 可以实例化。
[Quote=引用 7 楼 vrhero 的回复:]
又看到这个帖子...发现不止是命名的问题,整个一个多余...只需要改成下面这样就满足要求了...

public abstract class BaseProvider <T, IList <T>>
  where T : new()
[/Quote]
vrhero 2009-12-22
  • 打赏
  • 举报
回复
又看到这个帖子...发现不止是命名的问题,整个一个多余...只需要改成下面这样就满足要求了...

public abstract class BaseProvider <T, IList<T>>
where T : new()
加油馒头 2009-12-22
  • 打赏
  • 举报
回复
泛型约束,C#2.0新特性
lovexilove 2009-12-21
  • 打赏
  • 举报
回复
约束与继承
vrhero 2009-12-21
  • 打赏
  • 举报
回复
这是泛型约束...去看看MSDN...

where(泛型类型约束)(C# 编程指南)

ps:这个命名不太好,不符合命名约定,容易让调用者混淆...泛型类型应该加T前缀,另外如果可行的话List<T>改成IList<T>或IEnumerable<T>等接口类型适应性更好...如下...

public abstract class BaseProvider <TEntity, TEntityCollection>
where TEntityCollection : IList<TEntity>, new()
where TEntity : new()
APP开发王 2009-12-21
  • 打赏
  • 举报
回复
C#中的泛型只支持显示的约束,因为这样才能保证C#所要求的类型安全,但显示的约束并非时必须的,如果不加约束,泛型类型参数将只能访问System.Object类型中的公有方法。“显式约束”由where子句表达,可以指定“基类约束”,“接口约束”,“构造器约束”,“值类型/引用类型约束”共四种约束。下面的例子来源于李建忠老师的讲座PPT。

1、基类约束:

class A { public void F1() {} }
class B { public void F2() {} }
class C< S,T> where S: A // S继承自A
where T: B // T继承自B
{  // 可以在类型为S的变量上调用F1,  // 可以在类型为T的变量上调用F2 }
wholesale3151 2009-12-21
  • 打赏
  • 举报
回复
public abstract class BaseProvider <chinese wholesalers
ugg, CollectionType>
where CollectionType : List <EntityType>, new()
where EntityType : new()
woshifou 2009-12-21
  • 打赏
  • 举报
回复
约束。

111,122

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧