I am using reflection to check an object’s fields. I only want to do work on fields that are assigned a non-default value, so non-null for reference types, and values other than false/0/0.0 for bool/int/float etc.
C# 2.0 has a
default(T) keyword, but this only works when you know the type
T at compile time. So
default(int) returns 0, but you can’t do
Avner Kashtan has a good summary and a work-around using reflection, which involves calling the default constructor for value types using
Activator.CreateInstance(myFieldInfo.FieldType) and comparing it to the value you have.