2009-03-30 2 views
0

변수를 취하고 그 내용을 설명/출력하는 C#/.net에 내장 함수가 있습니까? PHP에는 print_r()var_dump() 함수가 있습니다. (C#과 PHP의 고유 한 차이점을 알고 있습니다.C# 변수 설명 함수

로깅 스크립트 용이므로 가볍고 방해가되지 않아야합니다. 가능하다면 내장 함수를 사용하는 것을 선호하지만 함수를 작성하는 것을 고려 중입니다.

변수의 예로는 사용자 지정 개체의 배열/목록이 있으며 이벤트 처리기 등으로 전달되는 eventargs가 덤프됩니다. 가능한 한 반영 대상을 피하면서이 작업을 수행하고 싶습니다.

감사

답변

1

이 객체의 문자열 표현을 얻을 수있는 여러 가지 방법에 대한 요약이 질문에 대한 내 대답을 참조하십시오 : 당신이 여기에 모두 매우 일반적이고 가벼운 당신의 최선의 선택으로 원하기 때문에
String casts

아마 Convert.ToString()입니다 .

+0

내가 일을 끝낼 거라고 생각 그런 식으로 - 고마워. – Macros

1

나는 확실하지 않다 어떤 C#에서 덤프 기능 내장,하지만 당신은 단순히 MethodInfo, PropertyInfo,의 fieldInfo 등의 변수의 형태를 통해 반사를 사용하고 반복 할 수

편집 : 예, 정확하지는 않습니다.

0

PHP는 잘 모르겠지만 클래스의 ToString()을 재정의하거나 구현하는 것이 가장 유사하다고 생각합니다.

예. Person 클래스의 경우 다음과 유사한 ToString()을 구현할 수 있습니다.

public override string ToString() 
{ 
    return string.Format("{0} {1}", this.FirstName, this.LastName); 
} 

이렇게하면 Person의 인스턴스에 대해 "firstname lastname"이 출력됩니다.

0

가이에 대한 기본 방법은 없지만, 여기 반사를 사용하여 필드와 속성을 얻을 수있는 예입니다

public static string DisplayObjectInfo(Object o) 
{ 
    StringBuilder sb = new StringBuilder(); 

    // Include the type of the object 
    System.Type type = o.GetType(); 
    sb.Append("Type: " + type.Name); 

    // Include information for each Field 
    sb.Append("\r\n\r\nFields:"); 
    System.Reflection.FieldInfo[] fi = type.GetFields(); 
    if (fi.Length > 0) 
    { 
     foreach (FieldInfo f in fi) 
     { 
     sb.Append("\r\n " + f.ToString() + " = " + 
        f.GetValue(o)); 
     } 
    } 
    else 
     sb.Append("\r\n None"); 

    // Include information for each Property 
    sb.Append("\r\n\r\nProperties:"); 
    System.Reflection.PropertyInfo[] pi = type.GetProperties(); 
    if (pi.Length > 0) 
    { 
     foreach (PropertyInfo p in pi) 
     { 
     sb.Append("\r\n " + p.ToString() + " = " + 
        p.GetValue(o, null)); 
     } 
    } 
    else 
     sb.Append("\r\n None"); 

    return sb.ToString(); 
} 

출처 : http://www.developer.com/net/csharp/article.php/3713886