我有课:
class Program
{
static void Main(string[] args)
{
}
public static int SetFlag_Old(this int i, int flag, bool set = true)
{
return (set) ? i | flag : ((i & flag) != 0) ? (i - flag) : i;
}
}
当我把这段代码放到上面的main方法中时,我没有选择调用扩展方法,我无法找出原因...
int i = 0;
i.
即使我创建一个非静态方法并放置该代码,我似乎无法调用扩展方法。我错过了一些非常简单的东西吗?
答案 0 :(得分:14)
扩展方法必须是静态类:
public static class IntExtensions
{
public static int SetFlag_Old(this int i, int flag, bool set = true)
{
return (set) ? i | flag : ((i & flag) != 0) ? (i - flag) : i;
}
}
答案 1 :(得分:1)
扩展方法必须在非泛型和静态类中定义。程序不是静态的。
请参阅Extension methods must be defined in a non-generic static class
答案 2 :(得分:0)
代码甚至不会编译。它会给出错误Extension method must be defined in a non-generic static class
。您还需要多少信息?我会为你重写它:
必须在非通用静态类中定义扩展方法
我会补充说,您可以将Program
课程static
。考虑到它的“入口”方法(Main
)是static
我不知道他们为什么没有在代码模板中直接使用它。
答案 3 :(得分:0)
扩展方法所在的类必须是静态的。将静态修饰符添加到Program类。