C#中"方法"本身的类型是什么?

Kan*_*Heo 2 c# types

我听说C#是一种纯粹的面向对象的编程语言,因为所有的东西都源于System.Object.

所以我怀疑方法本身的类型是什么.我尝试使用StackTraceStackFrame获取方法的类型,但我得到了类的名称,声明了哪些方法.

当然,我试过这个:

var func = new TestClass().TestMethod; //TestMethod is a method of TestClass
Run Code Online (Sandbox Code Playgroud)

但是我只得到了这个错误.

CS0815    Cannot assign method group to an implicitly-typed variable 
Run Code Online (Sandbox Code Playgroud)

可以将方法分配给Func<..., TResult>类型变量.我用Func和返回字符串的方法测试,然后我得到了这个:

// Result of
// Func<string> func = new TestClass().TestMethod;
// func.GetType();
Instance TestClass -> TestMethod Type : System.Func`1[System.String]
Run Code Online (Sandbox Code Playgroud)

但它是一个类型名称Func<string>.那么,方法的真正类型名称是什么?

编辑2018年2月10日上午01:46,KST(GMT +09:00)

好吧,让我总结一下.函数本身没有类型,也不是对象,并且Delegate/ Func<>是.NET Framework的一个功能,它将函数作为一等公民处理(但它不是FCC).这是对的吗?

Mar*_*und 6

方法没有类型.方法就是它们 - 只是对象或类的"可调用函数".您可以将它们分配给DelegatesFunc具有相同签名的事实只是框架的一个特征,但该方法本身没有任何"类型".

与类型最接近的可能是方法的返回值(如果有的话).