2011-05-07 3 views
8

인스턴스의 변수 이름과 값을 나열 할 수 있습니까?문자열 변수 이름과 값을 모두 나열 할 수 있습니까?

public class Car 
    { 
    public string Color; 
    public string Model; 
    public string Made; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

//Create new instance 
    Car MyCar = new Car(); 
    MyCar.Color = "Red"; 
    MyCar.Model = "NISSAN"; 
    MyCar.Made = "Japan"; 

//SOMETHING HERE 
    foreach (MyCar Variable in MyCar) 
    { 
     Response.Write("<br/>Variable Name"+ "XXX"+ "Variable Value"); 
    } 

} 
+0

참고 공개 필드를 사용하는 것은 일반적으로 나쁜 습관입니다. 대신 속성을 사용해야합니다. – svick

답변

6

이 같은 것을보십시오 : 그것을 바탕으로

, 나는 귀하의 경우이 코드에 의해 해결 될 것이라고 생각

using System; 

class Car 
{ 
    public string Color; 
    public string Model; 
    public string Made; 
} 

class Example 
{ 
    static void Main() 
    { 
     var car = new Car 
     { 
      Color = "Red", 
      Model = "NISSAN", 
      Made = "Japan" 
     }; 

     foreach (var field in typeof(Car).GetFields()) 
     { 
      Console.WriteLine("{0}: {1}", field.Name, field.GetValue(car)); 
     } 
    }  
} 
+0

+1을 치고 코드를 ;-) – takrl

4

이것은 리플렉션을 사용하여 수행 할 수 있습니다. 그러나 클래스에 포함 된 것이 무엇이든간에 열거하려는 경우 사전을 사용하여 간단히 열거 할 수 있습니다.

5

반성을해야합니다. 비슷한 질문을 볼 수 있습니다 : How do I get a list of all the public variables I have in a Class? (C#). 이 같은

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    FieldInfo[] myFieldInfo; 
    Type myType = typeof(Car); 

    myFieldInfo = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); 

    string result = @"The String fields of Car class are:"; 

    for (int i = 0; i < myFieldInfo.Length; i++) 
    { 
     if (myFieldInfo[i].FieldType == typeof(String)) 
     { 
      result += "\r\n" + myFieldInfo[i].Name; 
     } 
    } 

    MessageBox.Show(result); 
} 

public class Car 
{ 
    public string Color; 
    public string Model; 
    public string Made; 
} 
3

뭔가 :

foreach (var prop in typeof(Car).GetProperties()) 
{ 
    Response.Write(prop.Name + ": " + prop.GetValue(MyCar, null) ?? "(null)"); 
} 
+0

-1 이들은 필드가 아니라 속성입니다. –

+0

그러면'GetProperties()'대신'GetFields()'가되어야합니다. – takrl

관련 문제