-1

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

public static void Invert(this ref bool value)
{
    value = !value;
}

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

4

2 回答 2

7

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

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

关于什么:

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

bool x = false.Invert();
于 2012-07-18T10:01:58.367 回答
4

首先,我知道没有List.Clear扩展方法。List<T>.Clear()是一种正常的方法。它没有ref参数。

第二个问题是List<T>可变引用类型。所以你可以修改它,而不改变引用本身。仅ref当您想更改引用本身或正在处理值类型时才需要。

于 2012-07-18T10:01:34.247 回答