C# 在.NET BCL中是否有采用'ref'参数的方法?

C# 在.NET BCL中是否有采用'ref'参数的方法?,c#,parameters,C#,Parameters,TryParse方法家族使用out参数;我可以给出Swap作为ref参数有用的示例,但是.NET基类库中有好的示例吗?仅在mscorlib中就有很多。运行此命令以查找它们,并在不同的程序集中为其指定类型以显示其他类型 using System; using System.Linq; class Test { static void Main() { ShowRefsInAssemblyContaining(typeof(string)); }

TryParse
方法家族使用
out
参数;我可以给出
Swap
作为
ref
参数有用的示例,但是.NET基类库中有好的示例吗?

仅在mscorlib中就有很多。运行此命令以查找它们,并在不同的程序集中为其指定类型以显示其他类型

using System;
using System.Linq;

class Test
{    
    static void Main()
    {
        ShowRefsInAssemblyContaining(typeof(string));
    }

    static void ShowRefsInAssemblyContaining(Type exampleType)
    {
        var query = from type in exampleType.Assembly.GetTypes()
                    where type.IsPublic
                    from method in type.GetMethods()
                    where method.GetParameters()
                                .Any(p => p.ParameterType.IsByRef &&
                                         !p.IsOut)
                    select method;

        foreach (var method in query)
        {
            Console.WriteLine(method.DeclaringType + ": " + method);
        }
    }
}
最简单的例子:


(顺便说一句,你不喜欢LINQ吗?

我相信你的意思是在基类库中


如果是这样,则有多个位置采用ref参数。一个例子是System.Threading。

@JaredPar:我怀疑BCL的另一个名字:)根据c#标记和TryParse方法(这是BCL结构上的方法)的提及,我100%肯定alexey#r使用FCL作为.NET BCL的同义词。虽然现在回想起来,我不应该后退,我应该重新编辑。“BCL”基本上是指“系统名称空间中的内容”。“FCL”是指“系统和Microsoft命名空间中的内容”。可以理解的是,大多数人在漫不经心地说话时,根本不在乎区分的确切细微差别。是的,这是一个延伸:)看看这个链接,它显示了什么是FCL的一部分:LINQ==酷不知道这是可能的!!注意,它同时显示了
ref
out
参数方法,因为CLR不区分它们,只有C#编译器区分它们。