asp.net - 扩展方法必须在非泛型静态类中定义

标签 asp.net visual-studio-2010 linq

我编写了以下代码来找出丢失的序列,但我收到错误,因为我提到这是我的代码

public partial class Missing : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    List<int> daysOfMonth =
       new List<int>() { 6, 2, 4, 1, 9, 7, 3, 10, 15, 19, 11, 18, 13, 22, 24, 20, 27, 31, 25, 28 };
    Response.Write("List of days:");
    foreach (var num in daysOfMonth)
    {
        Response.Write(num);
    }
    Response.Write("\n\nMissing days are: ");
    // Calling the Extension Method in the List of type int 
    foreach (var number in daysOfMonth.FindMissing()){Response.Write(number);}
}
public static IEnumerable<int> FindMissing(this List<int> list)
{
    // Sorting the list
    list.Sort();
    // First number of the list
    var firstNumber = list.First();
    // Last number of the list
    var lastNumber = list.Last();
    // Range that contains all numbers in the interval
    // [ firstNumber, lastNumber ]
    var range = Enumerable.Range(firstNumber, lastNumber - firstNumber);
    // Getting the set difference
    var missingNumbers = range.Except(list);
    return missingNumbers;
}

}

我收到如下错误扩展方法必须在非泛型静态类中定义任何人都可以帮助我

最佳答案

正如错误所述,扩展方法只能在非泛型静态类上声明。您正尝试在 Missing 类中声明 FindMissing 方法,该类不是非泛型静态类。

您有两个选择:

  1. 使该方法成为普通方法,在这种情况下,它可以保留在 Missing 类中
  2. 声明另一个类(可能是 MissingExtensions)来包含该方法

这就是第二个选项的样子:

public static class MissingExtensions
{
    public static IEnumerable<int> FindMissing(this List<int> list)
    {
        // ...
    }
}

关于asp.net - 扩展方法必须在非泛型静态类中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238114/

相关文章:

c# - 无法通过 linq 从 ef 读取数据

c# - 警告说 Linq-To-Sql 表达式总是错误的,但这是不正确的,为什么?

c# - Libgit2sharp 迭代提交从最新到最旧

c++ - 视觉 C++ : creating a dll using libcurl

c# - 用户代码未处理未实现的异常

c# - ASP.NET 上 C# 中的当前请求全局变量

.net - ASP.NET MVC - 获取 QueryString 值

.net - “步入”突然在 Visual Studio 中不起作用

c# - Visual Studio 调试显示 ‘Start’ 而不是浏览器

asp.net - 离开 if 语句