> 백엔드 개발 > C++ > C#에서 변수 이름을 동적으로 검색하려면 어떻게 해야 합니까?

C#에서 변수 이름을 동적으로 검색하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-31 04:10:14
원래의
135명이 탐색했습니다.

How Can I Retrieve Variable Names Dynamically in C#?

동적으로 변수 이름 검색: Reflection 및 C# 6.0 nameof를 사용하여 대안 탐색

중급으로 컴파일된 후 변수 이름 가져오기 언어(IL)는 프로그래밍에서 일반적인 문제입니다. 이 기사에서는 런타임 시 유형 및 멤버에 대한 메타데이터를 검사할 수 있는 .NET의 강력한 기능인 리플렉션을 활용하여 이 문제를 해결하는 방법을 살펴보겠습니다.

리플렉션의 한계

처음에는 리플렉션을 활용하여 변수 이름을 검색하는 것을 고려할 수 있습니다. 그러나 변수는 컴파일 후에 IL에서 이름을 유지하지 않는다는 점에 유의하는 것이 중요합니다. 결과적으로 리플렉션에만 의존하면 원하는 결과를 얻을 수 없습니다.

표현 트리 및 클로저 입력: 해결 방법

리플렉션의 한계에도 불구하고 독창적인 해결 방법. 표현식 트리를 사용하면 변수를 클로저로 승격할 수 있습니다. 이 기술은 본질적으로 컴파일 타임에 변수의 컨텍스트를 캡처하므로 나중에 GetVariableName method.

구현 및 사용법

다음은 이 접근 방식을 보여주는 예입니다.

static string GetVariableName<T>(Expression<Func<T>> expr)
{
    var body = (MemberExpression)expr.Body;
    return body.Member.Name;
}

static void Main()
{
    var someVar = 3;
    Console.Write(GetVariableName(() => someVar));
}
로그인 후 복사

이 메서드는 본문에서 MemberExpression 인스턴스를 추출하여 작동합니다. 제공된 람다 표현식의 그런 다음 MemberExpression의 Member 속성은 변수의 이름을 보유합니다.

단점 및 성능 고려 사항

이 해결 방법은 리플렉션의 한계를 우회하지만 성능상의 단점이 있습니다. 여러 개체 생성, 인라인 불가능한 과도한 메서드 호출, 과도한 리플렉션 사용으로 인해 대기 시간이 발생할 수 있습니다. 따라서 성능이 중요한 코드 경로에서는 이 접근 방식을 사용하지 않는 것이 좋습니다.

C# 6.0의 키워드 이름: A Simpler Solution

C# 6.0의 출현과 함께 , 훨씬 더 간단한 솔루션인 nameof 키워드가 나타났습니다. 이 키워드는 컴파일 타임에 변수, 속성 또는 메서드의 이름에 액세스하는 간결하고 편리한 방법을 제공합니다.

이제 원래 예에서는 아래와 같이 nameof를 사용하여 변수 이름을 쉽게 검색할 수 있습니다.

static void Main()
{
    var someVar = 3;
    Console.Write(nameof(someVar));
}
로그인 후 복사

nameof 키워드는 GetVariableName 메서드와 동일한 기능을 제공하지만 향상된 기능을 제공합니다. 성능.

결론

.NET에서 변수 이름을 검색하려면 신중한 고려가 필요합니다. 리플렉션 및 식 트리는 런타임에 변수 이름을 얻기 위한 해결 방법을 제공하지만 성능에 미치는 영향을 고려해야 합니다. 이와 대조적으로 C# 6.0의 nameof 키워드는 이러한 성능 문제를 제거하고 이 작업에 대한 보다 효율적인 솔루션 역할을 합니다.

위 내용은 C#에서 변수 이름을 동적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿