C# 请教一个方法中取传递参数的变量nameof的问题
本帖最后由 cnahbb 于 2019-11-27 11:17 编辑```
static void Log(int val)
{
Console.WriteLine("{0}:{1}", nameof(val), val);
}
static void Main(string[] args)
{
int a = 1234;
Log(a);
//这里输出 "val:1234",有没有办法输出"a:1234",a是传入变量的名字
}
```
谢谢大家 你把a的名字传进去呢 log形参改为a 或者这样写
class Program
{
static void Log<T>(Expression<Func<T>> expression)
{
var me = expression.Body as MemberExpression;
var name = me.Member.Name;
var value = expression.Compile().Invoke();
Console.WriteLine(name);
Console.WriteLine(value);
}
static void Main(string[] args)
{
int a = 1234;
Log(()=>a);
//这里输出 "val:1234",有没有办法输出"a:1234",a是传入变量的名字
}
} /// <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); 另类飞翔 发表于 2019-11-27 11:12
///
/// 获取变量名称
///
谢谢大佬 德古拉伯 发表于 2019-11-27 10:58
log形参改为a
兄弟 这是掩耳盗铃啊 Light紫星 发表于 2019-11-27 10:59
或者这样写
class Program
谢谢大佬
页:
[1]