>백엔드 개발 >C++ >런타임에 C# 변수 이름을 어떻게 얻을 수 있나요?

런타임에 C# 변수 이름을 어떻게 얻을 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-27 03:56:09266검색

How Can I Get a C# Variable's Name at Runtime?

리플렉션을 사용하여 변수 이름 가져오기

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.