Page 179 - CSharp/C#
P. 179
Expression:
public static string NameOf<T>(Expression<Func<T>> propExp)
{
var memberExpression = propExp.Body as MemberExpression;
return memberExpression != null ? memberExpression.Member.Name : null;
}
public static string NameOf<TObj, T>(Expression<Func<TObj, T>> propExp)
{
var memberExpression = propExp.Body as MemberExpression;
return memberExpression != null ? memberExpression.Member.Name : null;
}
Usage:
string variableName = NameOf(() => variable);
string propertyName = NameOf((Foo o) => o.Bar);
Note that this approach causes an expression tree to be created on every call, so the performance
is much worse compared to nameof operator which is evaluated at compile time and has zero
overhead at runtime.
Expression-bodied function members
Expression-bodied function members allow the use of lambda expressions as member bodies. For
simple members, it can result in cleaner and more readable code.
Expression-bodied functions can be used for properties, indexers, methods, and operators.
Properties
public decimal TotalPrice => BasePrice + Taxes;
Is equivalent to:
public decimal TotalPrice
{
get
{
return BasePrice + Taxes;
}
}
When an expression-bodied function is used with a property, the property is implemented as a
getter-only property.
View Demo
https://riptutorial.com/ 125

