首页 > 解决方案 > 可以从 C# 中的定义函数内部访问变量名称吗?

问题描述

如果我有一个变量,我可以在 C# 中打印出它的声明名称,如下所示:

String myVar = "This is a string.";
Console.WriteLine($"This variable is named {(((MemberExpression)((Expression<Func<string>>)(()=>T)).Body).Member.Name)}.");

这打印This variable is named myVar.

但是,我会在其定义功能的范围内需要它,即

String myVar = f(args);
public String f(args) {
    String name = ...
    //here goes any code necessary to make name = "myVar"
}

我需要在里面放什么代码f来恢复变量名?这可能吗?我认为它比上一个复杂一些。

标签: c#

解决方案


这可能吗?

不。首先,方法返回的值根本不需要分配给变量。其次,即使分配给变量,也不是所有变量都有名称。因此,无法知道函数调用的值将被分配给的变量的名称。

最佳实践是始终设计函数,以便它们独立于调用者的详细信息计算值。

(可以从调用者那里获取调用者的源代码位置,但该功能应仅限于调试和诊断目的。)

这听起来很像一个“XY”问题。也就是说,你有一些真正的问题,你想出了一个错误的解决方案,现在你正在问一个关于错误解决方案的问题。你试图解决的真正问题是什么?


推荐阅读