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
   174   175   176   177   178   179   180   181   182   183   184