【冷门】 C# 小技巧之获取变量名称

今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在找寻这种方式,很不容易找到一个解决方案来自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);

执行只能是你要返回变量,局部变量随意。不能在匿名方法里写其它否则报错。

(以下错误演示)

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

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

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

下面是非扩展的调用演示

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

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

个人认为在IT上还是菜鸟,第一次写博客,我就不多说了,上述经过测试,并未测试完全。希望有其它意见的朋友指正!

时间: 2024-10-18 03:45:48

【冷门】 C# 小技巧之获取变量名称的相关文章

ThinkPHP小技巧之改变应用名称

一丶更改应用名称 当我们部署好thinkphp代码后,我们得结构是这样的 我们可以在index.php入口文件设置应用名称 代码如下. <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +-------------------------------------------------------

java学习日记之小技巧(跟着变量走一走)

hello 大家好! 昨天写了方法的创建与如何调用,今天我们写带参数的方法 先new个java project,然后点开工程,点击src右键new一个class   , 然后我们在自动生成的主函数下边写我们的方法 public class Variable { public static void main(String[] args) { } public static void way1(String pname) { //写我们的逻辑处理 String msg="好人"; if(

python 小技巧之获取固定下面包含的某种类型文件的个数

遇到这样一个问题.我想要统计某个文件夹下有多少个py文件怎么办. 用python能解决吗?答案,能. 解决办法,使用glob 代码如下: import glob path_file_number=glob.glob(pathname=r'*.py') print(path_file_number) print(len(path_file_number)) 很简单的几行代码,. 第一步,导入glob库 第二步,使用glob下面的glob的方法,参数是路径下判断的文件 第三步:打印: 结果: 这个是

Postman小技巧之定义环境变量(Environment)

今天就简单的来讲讲postman的小技巧--定义环境变量(Environment),最常见的是将测试 URL 进行定义成变量的形式,这样随着你的域名怎么变,URL 就不用变更,非常方便.除此之外,也可以将一些敏感的测试值定义为环境变量,比如密码.接下来,来看下怎么新建一组环境变量,如下操作打开环境变量的管理入口: 点击Add添加一个环境集合: 键值对的形式添加环境变量: 以{{key}}的形式引用环境变量: 原文地址:https://www.cnblogs.com/zdd-803/p/11369

关于项目优化的一些小技巧

1.若项目能编译成功,但有错误提示时,可以用清理缓存的方式解决. 就是把/Users/用户名/Library/Developer/Xcode/DerivedData文件全部删除.但要注意的是删除前要关闭项目,否则该问题仍存在. 2.利用NSData读取文件 NSData读取文件时分两种形式,通过网络读取和本地读取.二者不能混淆,否则会导致nil问题 //读取本地文件 NSData *dataTemp = [NSData dataWithContentsOfFile:@"/Volumes/IMG_

对于shell脚本参数获取时的一点小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取得

对于shell脚本获取参数的一些小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i  取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取

我给女朋友讲编程html系列(9)—颜色值及如何获取颜色值和下载软件小技巧

一.颜色名 大多数的浏览器都支持颜色名集合. 仅仅有 16 种颜色名被 W3C 的 HTML4.0 标准所支持.它们是:aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow. 其实这里面只需要记住下面几个常用的就行了: 序号 颜色名 意思 1 red 红色 2 green 绿色 3 blue 蓝色 红绿蓝是颜色3原色,按不同比例混合可

Jquery和angularjs获取check框选中的值小技巧

在我们平常的开发中,有时候会需要获取一下check框选中的值,以及check框选中行的所有信息.这个时候有一个小技巧那就是我们可以把要获取的信息全部放到check框的值里面,这样我们可以获取check框选中值的时候也就相当于获取了当前行的信息. <td><input class="states" type="checkbox" name="orders" value="{{e.merchantId}},{{e.orde