在C#中获取变量和参数名称
问题陈述:
确定传递给函数的变量或参数的名称。例如,给定以下代码:
<code class="language-csharp">var myInput = "input"; var nameOfVar = GETNAME(myInput); // ==> nameOfVar 应该等于 "myInput" void testName([Type?] myInput) { var nameOfParam = GETNAME(myInput); // ==> nameOfParam 应该等于 "myInput" }</code>
我们如何在两种情况下获取“myInput”的名称?
解决方案:
C# 6.0之前的方案:
利用MemberInfoGetting类,您可以检索任何提供的成员的名称。以下是实现方法:
<code class="language-csharp">public static class MemberInfoGetting { public static string GetMemberName<T>(Expression<Func<T>> memberExpression) { MemberExpression expressionBody = (MemberExpression)memberExpression.Body; return expressionBody.Member.Name; } } // 获取变量名称: string testVariable = "value"; string nameOfTestVariable = MemberInfoGetting.GetMemberName(() => testVariable); // 获取参数名称: public class TestClass { public void TestMethod(string param1, string param2) { string nameOfParam1 = MemberInfoGetting.GetMemberName(() => param1); } }</code>
C# 6.0及更高版本方案:
C# 6.0中引入的nameof运算符简化了检索参数、变量和属性名称的过程。以下是实现方法:
<code class="language-csharp">string testVariable = "value"; string nameOfTestVariable = nameof(testVariable);</code>
以上是我如何在运行时获取C#变量或参数的名称?的详细内容。更多信息请关注PHP中文网其他相关文章!