在扩展名中使用"ref"或"out"

fub*_*ubo -1 c# extension-methods

有谁知道解决这个聪明的方法?

public static void Invert(this ref bool value)
{
    value = !value;
}
Run Code Online (Sandbox Code Playgroud)

c#说我不能在扩展名中使用"ref"或"out".但是存在像List.Clear()这样的扩展.

xan*_*tos 7

List.Clear()不是扩展方法,它是一种方法.即使它是一个扩展方法,它也不需要接收参数ref,因为它不会"返回"与您拥有的列表不同的列表,它会修改列表.

而且,一般来说,你不能.但是你通常不需要.

关于什么:

public static bool Invert(this bool value)
{
    return !value;
}

bool x = false.Invert();
Run Code Online (Sandbox Code Playgroud)