c# - 在c#中打印变量名

标签 c# variables printing

我有一个声明

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/

相关文章:

bash - 在 bash heredoc 中使用变量

oracle - SQL Developer - 在查询的 where 子句中使用开始和结束日期变量

python - 一起打印 4 个列表,元素数量不等

c# - MVC 4 - 未找到 404 的注销 Controller 操作

c# - 依赖注入(inject)有什么大的改进?

c# - 在我的多线程应用程序失败后,未完成的线程是否会挂起?

c# - 如何在 c# WPF 框架中禁用导航快捷方式

javascript - 将变量传递给表单的值属性

java - 每次循环中的条件正确时,程序都会打印该语句

Java打印问题