zoukankan      html  css  js  c++  java
  • 【转】 C# 小技巧之获取变量名称

    link: http://www.cnblogs.com/gongy/p/lm-2015-04-03.html

    今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在找寻这种方式,很不容易找到一个解决方案来自http://www.th7.cn/Program/net/201404/187358.shtml

    下面就是今天找到的进行详细解答

    首先需要自定义一个静态方法

         

    /// <summary>

    ///扩展获取变量名称(字符串)

    /// </summary>

    /// <param name="var_name"></param>

    /// <param name="exp"></param>

    /// <returns>return string</returns>

    public static string GetVarName<T>(this T var_name, System.Linq.Expressions.Expression<Func<T, T>> exp)

    {

    return ((System.Linq.Expressions.MemberExpression)exp.Body).Member.Name;

    }

    以上是为了调用方便所以使用了扩展不喜欢的朋友可以用下方的方式 方法可以直接写工具类中

    /// <summary>

    ///获取变量名称

    /// </summary>

    /// <param name="exp"></param>

    /// <returns>return string</returns>

    public static string GetVarName<T>(System.Linq.Expressions.Expression<Func<T, T>> exp)

    {

    return ((System.Linq.Expressions.MemberExpression)exp.Body).Member.Name;

    }

    下面是扩展的调用演示

          bool test_name = true; //变量类型可随意
          string tips = test_name.GetVarName(it => test_name);//返回结果 “test_name“

    执行只能是你要返回变量,局部变量随意。

     

    不能在匿名方法里写其它否则报错。

    (以下错误演示)

          bool test_name = true;
          string tips = test_name.GetVarName(it => 1==1);

    很多有经验的IT朋友应该也发现了实现原理,利用了lambda表达式。

    上述调用看起来参数有点过剩,个人习惯。

       

    下面是非扩展的调用演示

         bool test_name = true;
         string tips =
    类名.GetVarName(it => test_name);

    看起来好像跟上面的区别也仅是用什么点出这个方法,所以这个就得看个人习惯

    希望有其它意见的朋友指正!

    问题:

             string tips = test_name.GetVarName(it => test_name);//返回结果 “test_name“

    调用过于复杂和冗余,能否改成

       string tips = test_name.GetVarName();//返回结果 “test_name“

    标签C#获取变量名称

  • 相关阅读:
    windows 7 系统下,用户每次登录都是以临时配置文件的形式存在于users文件夹下
    string按行读取以及按空格分隔
    socket.io技术学习记录
    node.js实现js连接mysql数据库
    ajax在j2ee和js服务器上数据基本交换
    layui与jquery冲突导致下拉框无法显示的解决方法
    nativefier——将本地网页转化为桌面应用
    jquery——移动端touch事件
    Hibernate中使用HQL语句进行增,删,改,查
    一言不合敲代码(2)——八数码问题游戏
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/5143749.html
Copyright © 2011-2022 走看看