using System.Collections;
public static void Main()
DisplayClassFields(new A(), string.Empty);
private static void DisplayClassFields(object value, string indent)
Console.WriteLine("null");
FieldInfo[] fields = value.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (FieldInfo field in fields)
object fieldValue = field.GetValue(value);
if (field.FieldType.IsArray)
Console.WriteLine("{1}[] {0} = {{ {2} }}", field.Name, field.FieldType.GetElementType(), string.Join(", ", ((IEnumerable)fieldValue).Cast<object>()));
else if (field.FieldType == typeof(string))
Console.WriteLine("{1} {0} = \"{2}\"", field.Name, field.FieldType, fieldValue);
else if (field.FieldType.IsPrimitive)
Console.WriteLine("{1} {0} = {2}", field.Name, field.FieldType, fieldValue);
Console.WriteLine("{1} {0} = ", field.Name, field.FieldType);
DisplayClassFields(fieldValue, indent + "\t");
public int[] x = { 1, 2 };
public string str = "asdf";