Is there a way to list all Variables (Fields) of a class in C#. If yes than could someone give me some examples how to save them in a List and get them maybe using Anonymous Types (var).
Field[] fields = YourClassName. class. getFields(); returns an array of all public variables of the class.
A class variable is declared inside of class, but outside of any instance method or __init__() method. By convention, typically it is placed right below the class header and before the constructor method and other methods.
There are three different types of variables a class can have in Java are local variables, instance variables, and class/static variables.
Your question isn't perfectly clear. It sounds like you want the values of the fields for a given instance of your class:
var fieldValues = foo.GetType()                      .GetFields()                      .Select(field => field.GetValue(foo))                      .ToList();   Note that fieldValues is List<object>. Here, foo is an existing instance of your class.
If you want public and non-public fields, you need to change the binding flags via
var bindingFlags = BindingFlags.Instance |                    BindingFlags.NonPublic |                    BindingFlags.Public; var fieldValues = foo.GetType()                      .GetFields(bindingFlags)                      .Select(field => field.GetValue(foo))                      .ToList();   If you merely want the names:
var fieldNames = typeof(Foo).GetFields()                             .Select(field => field.Name)                             .ToList();   Here, Foo is the name of your class.
This will list the names of all fields in a class (both public and non-public, both static and instance fields):
BindingFlags bindingFlags = BindingFlags.Public |                             BindingFlags.NonPublic |                             BindingFlags.Instance |                             BindingFlags.Static;  foreach (FieldInfo field in typeof(TheClass).GetFields(bindingFlags)) {     Console.WriteLine(field.Name); }   If you want to get the fields based on some object instance instead, use GetType instead:
foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags)) {     Console.WriteLine(field.Name); } 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With