誰かがこれを賢く解決する方法を知っていますか?
public static void Invert(this ref bool value)
{
    value = !value;
}
c# は、拡張機能内で「ref」または「out」を使用できないと言っています。しかし、List.Clear() のような拡張機能は存在します。
誰かがこれを賢く解決する方法を知っていますか?
public static void Invert(this ref bool value)
{
    value = !value;
}
c# は、拡張機能内で「ref」または「out」を使用できないと言っています。しかし、List.Clear() のような拡張機能は存在します。
List.Clear()拡張メソッドではなく、メソッドです。また、それが拡張メソッドであったとしても、パラメーターを as として受け取る必要はありrefません。これは、持っていたものとは異なるリストを「返さない」ため、リストを変更します。
そして、一般的にはできません。しかし、通常は必要ありません。
どうですか:
public static bool Invert(this bool value)
{
    return !value;
}
bool x = false.Invert();
まず、List.Clear拡張メソッドがないことを知っています。List<T>.Clear()が通常の方法です。refパラメータはありません。
2 つ目の問題はList<T>、可変参照型であることです。したがって、参照自体を変更せずに変更できます。ref参照自体を変更する場合、または値の型で作業している場合にのみ必要です。