在 C# 中,将变量作为参数传递给函数是很常见的做法。但是,获取传递变量的原始名称可能会很棘手。考虑以下示例:
<code class="language-csharp">public string ExampleFunction(string Variable) { return "something"; // 修正:添加返回值 } string WhatIsMyName = "Hello World"; string Hello = ExampleFunction(WhatIsMyName);</code>
当使用 WhatIsMyName
变量调用 ExampleFunction
时,我们可能希望获取原始变量的名称,例如:
<code class="language-csharp">Variable.OriginalName.ToString() // == "WhatIsMyName"</code>
在 C# 中是否可以实现这一点?
虽然无法直接获取原始变量名,但 C# 3.0 及更高版本可以使用 lambda 表达式提供一种解决方案:
<code class="language-csharp">public void ExampleFunction(Expression<Func<string>> f) { Console.WriteLine(((MemberExpression)f.Body).Member.Name); } ExampleFunction(() => WhatIsMyName);</code>
注意: 此方法依赖于未指定的行为,可能与 C# 的未来版本或其他编译器不兼容。 它只适用于直接访问变量的情况,如果变量经过任何计算或转换,此方法将失效。 此外,这种技术主要用于反射和代码分析,不建议在常规代码中使用。
以上是如何检索传递给C#函数的原始变量名称?的详细内容。更多信息请关注PHP中文网其他相关文章!