I’m passing a lambda expression as a parameter.
In this case, someObject has a property called property accessible with someObject.property.
When I pass: o => o.childListOfObjects[0].property,
where childListOfObjects is a List<someObejct> and ,
expression.Body returns o => o.childListOfObjects.get_Item(0).property.
Skip to the end:
Is list[i] an alias for list.get_item(i) in C#?
Yes, properties in general are just syntactic sugar around
get_PropertyNameandset_PropertyNamemethods.Indexers — for example,
list[i]— are just a special type of property, basically syntactic sugar aroundget_Item(i)andset_Item(i)methods.(Note that the indexer property doesn’t necessarily have to be called
Item, but that’s what it’s called onList<T>, and that’s the default name given to indexers on custom types too unless you override it usingIndexerNameAttribute.)