如何在C#中存在全局函数?

当在一个类中定义所有内容时,如何在C#中存在全局函数? 我正在MSDN阅读OpCodes.Call的文档,并惊讶地看到以下措辞,

元数据令牌携带足够的信息以确定调用是静态方法,实例方法,虚拟方法还是全局函数。

全球function? 它存在于C#中吗? (它绝对不是指static方法,因为它与全局函数一起明确列出)。

你不能在C#中拥有全局函数,它只是语言的一部分。 您必须在您选择的某些类上使用静态方法来获得类似的function。

但是,C#并不是使用CLR的唯一语言。 可以编写Managed C ++,它可以具有全局function。

在Build 2014大会上宣布,从Roslyn开始,您可以通过using TypeName;从类型中导入静态方法using TypeName; 指令,所以你不必使用System.Math.Min(...)你可以这样做:

 using System.Math; ... var z = Min(x,y); 

注意:到发布时,这变为:

 using static System.Math; 

因为System.Reflection.Emit.OpCodes.Call不是关于C#。 这是关于发射IL操作码。 在IL中,有一些C#中没有的function。 全局function是这些function之一。

我认为事实是,这是IL注入操作,但IL并不仅仅是关于C#。 换句话说,它是支持支持全局function的语言。

您指的文档适用于.net。 C#不满足全局function,但.net确实如此。

C#不支持MSIL的所有function。 全球职能就是其中之一。 VB.Net,F#,IronPython或其他一些语言可能会使用这个以及非C#编译器生成的其他function。

我只是覆盖了我以前的答案……

以下是IL DASM中每个与其相关代码相似的内容:

 // Static Method IL_0001: call void testapp.Form1::Test() // Instance Method IL_0001: call instance void testapp.Form1::Test() // Virtual Method IL_0001: callvirt instance void testapp.Form1::Test() // Global Function IL_0000: call void testapp.Test() 

因此,要回答您的问题,没有直接的方法在C#的最后一个方法中生成元数据令牌。 我不得不在C ++中创建最后一个。