为什么我不能称之为扩展方法?

Exi*_*tos 3 c#

我上课了:

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;

    }
}
Run Code Online (Sandbox Code Playgroud)

当我把这个代码放到上面的main方法中时,我没有选择调用扩展方法,我无法弄清楚为什么......

int i = 0;
i.
Run Code Online (Sandbox Code Playgroud)

即使我创建一个非静态方法并放置该代码我似乎无法调用扩展方法.我错过了一些非常简单的事吗?

Ric*_*ton 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/bb383977.aspx