public class Class
    {
        private string Main()
        {
            string abc = "";
            Test(abc);
        }        private void Test(string str)
        {
            //我在这个方法里怎么能得到传过来的变量名称?即"abc"
        }
    }

解决方案 »

  1.   

    lz什么意思,第一个方法不是已经调用了Test()方法了么,你的方法参数str就是abc
      

  2.   


    我是想在Test里得到调用方法时传进来的那个变量名称
    比如
    有string a="";Test(a); 我要在Test里得到"a"
    有string b="";Test(b); 我要在Test里得到"b"
    有string c="";Test(c); 我要在Test里得到"c"
    我表达能力不是特好,希望能明白我的意思
      

  3.   


    算是技术研究吧,自己想鼓捣个编程的小工具
    这个地方当然也可以直接传过去"abc"之类的字符串,但是我想弄的是可以通过lanbda表达式来对实体类的属性去选择的
      

  4.   


    这样真的不行...
    如果我的参数是int bool之类的呢?还有这里不能用object,而且我这个变量不赋值,再赋值就跟直接传过来一个"abc"意思差不多了
      

  5.   

    lambda表达式来处理你想要的这情况也不是这样子的吧。。
    而且lamba提供了一套相对完整的库函数能处理很多问题
      

  6.   

     static    void Main(string[] args)
            {
                string abc = "123";
              
               Test(p=>abc);
             
            }        private static void Test(Expression<Func<string,string>> exp)
            {
              
                var body = exp.Body as MemberExpression;
                Console.WriteLine("参数名:" + body.Member.Name);
             
               
            }
      

  7.   


    对的,是通过func之类来处理的,因为我怕我说不清楚所以没复制源码,只是写了一个简单的例子来说明我的问题
      

  8.   


    高手 膜拜~~~
    还有一个问题要请教下
    就是MemberExpression body = (MemberExpression)filter.Body;
    var body = exp.Body as MemberExpression;这两句代码哪句效率更高?最好能帮小弟解释下