如果我实例化List<string>
的子类,那么我可以使用Linq的Select
方法。
using System.Linq;
namespace LinqProblem
{
class Program
{
static void Main(string[] args)
{
BetterList list = new BetterList();
list.Select(l => l.ToString() == "abc"); // no compile error
}
}
}
但是如果我尝试在子类的定义中使用Select ...
using System.Collections.Generic;
using System.Linq;
namespace LinqProblem
{
class BetterList : List<string>
{
public List<string> Stuff
{
get
{
base.Select(l => l.ToString() == "abc"); // compile error
}
}
}
}
错误:
'
List<string>
'不包含'选择'的定义。
为什么会出现这种情况,是否有解决办法?
答案 0 :(得分:11)
Select()
是一种扩展方法。 base
关键字专门用于非虚拟调用基类方法,不支持扩展方法。
将其更改为this.Select
,它会正常工作。