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