c# - 为什么我不能使用 base.Select 在 List<string> 的子类中使用 Linq Select?

标签 c# .net linq

<分区>

如果我实例化 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>' does not contain a definition for 'Select'.

为什么会这样,是否有解决方法?

最佳答案

Select() 是一种扩展方法。 base关键字专门用于非虚调用基类方法,不支持扩展方法。

将其更改为 this.Select 即可正常工作。

关于c# - 为什么我不能使用 base.Select 在 List<string> 的子类中使用 Linq Select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018428/

相关文章:

c# - 通过 C# 解析 csproj - 无法解析 ItemGroup

C# .Net 3.5 使用 LINQ 替换文件扩展名的代码

跨多个数据库的 LINQ

c# - 如何对 SQL Server 中具有相同 accname 帐户的行进行总和

c# - 对实现 IEnumerator 的类进行序列化

c# - 从 XML 声明片段 : XmlDeclaration is not supported for partial content parsing 获取 XML 编码

c# - ImmutableDictionary 枚举顺序

c# - 我们如何为我们的软件实现技术独立的 Web 界面?

c# - 处理枚举时没有默认的switch语句

.net - HttpContext.User.Identity.AuthenticationType 的可能值