【问题标题】:What is the method variable? in C# [closed]什么是方法变量?在 C# [关闭]
【发布时间】:2016-02-08 03:09:25
【问题描述】:

我使用 C#。

当我在下面定义Hoge 方法时,

void Hoge(bool isBar){}

我得到下面的 Hoge 方法

var methodName = this.Hoge as Action<bool>).Method.Name;

但是,我无法理解this.Hoge 的类型。 因为,它可以赋值和强制转换。

但是,它不能直接给我方法名。 this.Hoge.Method.Name;

而且,它也有错误。 typeof(this.Hoge)

究竟什么是方法变量?

【问题讨论】:

  • "它不能直接给我方法名" - 如果你使用 C# 6.0,你可以使用nameof(this.Hoge)
  • 感谢您的回复。但是,我不使用适合 4.0 的 C# 6.0,因为我的 C# 是 Mono 的。
  • 即使我添加了缺少的括号,您的代码也无法编译。你能检查一下吗?您需要提供minimal reproducible example
  • void Hoge(bool isBar){ return false; }
  • @shinriyo 语言版本和运行时版本是两个不同的东西。您可以编译 C#6 代码,面向 .NET 4.5

标签: c# variables methods


【解决方案1】:

您提供的代码不是有效的 C# 代码,因此很难理解您的要求。但我认为您正试图了解表达式 this.Hoge 是如何被翻译成最终可以为您提供方法名称的东西。

如果是这样,那么您的代码示例应该如下所示:

var methodName = ((Action<bool>)this.Hoge).Method.Name;

它的作用是隐式创建一个委托类型的实例(在本例中,类型为Action&lt;bool&gt;),就好像你这样写:

var methodName = new Action<bool>(this.Hoge).Method.Name;

当然,一旦你有了一个委托类型,该类型就有一个Method property,它返回一个MethodInfo 对象,而该对象又当然有一个Name 属性。


如果这不是您要问的问题,请提供一个有效的、可编译的 C# 示例来说明您要问的内容,以及关于该代码的措辞更准确的问题,从而改进您的问题。

【讨论】:

  • 是的。对不起。我忘了(
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 2012-01-27
  • 2013-08-15
  • 1970-01-01
  • 2012-10-05
  • 2021-06-28
  • 2013-11-02
  • 2015-02-13
相关资源
最近更新 更多