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