2014-05-13 3 views
1

식에 사용 된 변수의 이름을 추출하는 식을 만드는 방법에 대한 몇 가지 예제를 보았습니다. 그게 좋겠지 만 함수 매개 변수로 전달 된 변수의 이름을 추출해야하고 함수 내부에서 필요합니다.매개 변수로 전송 된 변수의 이름을 가져옵니다.

아래 예제에서 "guessMyName"name을 반환하는 Guess 함수를 사용할 수 있도록해야합니다.

이것이 가능합니까?

class NameSample 
{ 
    static internal void Test() 
    { 
     string message1 = ""; 
     string message2 = ""; 

     string guessMyName = "my value"; 

     // guessMyName: my value 
     message1 = GetName(() => guessMyName) + ": " + guessMyName; 

     // parameter: my value 
     message2 = Guess(guessMyName); 
    } 

    static internal string Guess(object parameter) 
    { 
     return GetName(() => parameter) + ": " + parameter; 
    } 

    static internal string GetName<T>(Expression<Func<T>> expr) 
    { 
     return (expr.Body as MemberExpression).Member.Name; 
    } 
} 
+3

아니, 그렇게 할 수는 없습니다. 메서드가 변수와 함께 호출되면 전달되는 변수의 값입니다 –

+2

제안 된 복제본에 동의하지 않습니다. 그것은 완전히 다른 질문입니다. –

+0

@ThomasLevesque 우리는 그것을 다시 열거 나 오른쪽 복제본으로 닫을 수 있습니다. –

답변

4

아니요, 불가능합니다. 변수 이름은 선언하는 메소드의 범위에만 존재합니다.

메서드에 전달되는 것은 변수 자체가 아니라 변수 값이므로 해당 이름에 액세스 할 수 없습니다. ref 매개 변수의 경우에도 전달 된 것은 이름이없는 변수의 메모리 위치입니다.

관련 문제