我有一个声明
int A = 10,B=6,C=5;
我想写一个打印函数,这样我就可以将 int 变量传递给它,然后 它打印出变量名和值。
例如,如果我调用 print(A) 它必须返回“A: 10”,然后打印 (B) 然后它必须返回“B:6”
简而言之,我想知道如何访问变量的名称并将其打印到 C# 中的字符串。我必须使用反射吗?
阅读答案后
大家好,感谢您提供的建议。我将尝试一下,但我想知道在 .NET 2.0 中是否完全可行?没有什么类似于
#define prt(x) std::cout << #x " = '" << x << "'" << std::endl;
C/C++ 中有哪些宏?
最佳答案
唯一明智的做法是使用 Expression
API;但这进一步改变了代码......
static void Main() {
int A = 10, B = 6, C = 5;
Print(() => A);
}
static void Print<T>(Expression<Func<T>> expression) {
Console.WriteLine("{0}={1}",
((MemberExpression)expression.Body).Member.Name,
expression.Compile()());
}
注意:如果这是为了调试目的,请务必将 [Conditional("DEBUG")]
添加到方法中,因为以这种方式使用变量会微妙地改变代码的性质方式。
关于c# - 在c#中打印变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/729803/