有谁知道解决这个聪明的方法?
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
参数。
第二个问题是List<T>
可变引用类型。所以你可以修改它,而不改变引用本身。仅ref
当您想更改引用本身或正在处理值类型时才需要。