【冷門】 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朋友應該也發現了實現原理,利用了lambda表達式。
上述調用看起來參數有點過剩,個人習慣。
 
下面是非擴展的調用演示
     bool test_name = true;
     string tips = 類名.GetVarName(it => test_name);
看起來好像跟上面的區別也僅是用什么點出這個方法,所以這個就得看個人習慣
個人認為在IT上還是菜鳥,第一次寫博客,我就不多說了,上述經過測試,並未測試完全。希望有其它意見的朋友指正!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM