【发布时间】:2013-03-22 10:48:22
【问题描述】:
class Class1<T>
{
public virtual void Update(T entity)
{
Update(new List<T>() { entity }); //It's failed
}
public virtual void Update(IEnumerable<T> entities)
{
}
public virtual void Update<TSub>(TSub entity) where TSub : T
{
}
public virtual void Update<TSub>(IEnumerable<TSub> entities) where TSub : T
{
}
}
我有一段代码。但总是失败。
如果我将Update(new List<T>() { entity }) 替换为Update((new List<T>() { entity }).AsEnumerable()),就可以了。
删除第三种方法Update<TSub>(TSub entity) where TSub : T也可以。
谁能告诉我为什么?
【问题讨论】:
-
您进入了 C# 规范的黑暗部分 - 过载分辨率。结合泛型,
params,继承,多态,泛型约束,dynamic,可选参数——让我的心跳频率增加msdn.microsoft.com/en-us/library/aa691336(v=vs.71).aspx。 +1 好问题顺便说一句