誰かがこれを賢く解決する方法を知っていますか?
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
参照自体を変更する場合、または値の型で作業している場合にのみ必要です。