리플렉션을 사용하여 변수 이름 가져오기
C#에서 변수는 컴파일된 IL(중간 언어) 코드에서 이름 없이 나타날 수 있습니다. 그러나 표현식 트리를 활용하여 리플렉션 기술을 활용하여 변수 이름을 검색할 수 있습니다.
다음 예를 고려하세요.
var someVar = 3; Console.WriteLine(GetVariableName(someVar));
우리의 목표는 "someVar"를 출력하는 것입니다.
표현 트리 사용
리플렉션은 변수에 대한 직접 액세스를 제공하지 않습니다. 이름. 대신 표현식 트리를 사용하여 변수를 명명된 범위로 승격시키는 클로저를 만들 수 있습니다. 다음 메서드를 사용하면 됩니다.
public static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
이 메서드를 사용하려면 변수를 람다 식으로 래핑합니다.
Console.WriteLine(GetVariableName(() => someVar));
참고: 이 접근 방식은 다음과 같습니다. 객체 생성 및 과도한 리플렉션 사용으로 인한 성능 오버헤드.
C# 6.0 대안
C# 6.0에서는 nameof 키워드가 이 프로세스를 단순화합니다.
Console.WriteLine(nameof(someVar));
nameof 키워드는 표현식의 성능 영향 없이 변수 이름을 검색하는 직접적이고 가벼운 방법을 제공합니다. 트리 방식.
위 내용은 런타임에 C# 변수 이름을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!