c# - 可以从 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
来恢复变量名?这可能吗?我认为它比上一个复杂一些。
解决方案
这可能吗?
不。首先,方法返回的值根本不需要分配给变量。其次,即使分配给变量,也不是所有变量都有名称。因此,无法知道函数调用的值将被分配给的变量的名称。
最佳实践是始终设计函数,以便它们独立于调用者的详细信息计算值。
(可以从被调用者那里获取调用者的源代码位置,但该功能应仅限于调试和诊断目的。)
这听起来很像一个“XY”问题。也就是说,你有一些真正的问题,你想出了一个错误的解决方案,现在你正在问一个关于错误解决方案的问题。你试图解决的真正问题是什么?
推荐阅读
- java - 运行简单的 Servlet 类的问题
- microsoft-graph-api - 使用仅限应用的令牌时,Microsoft Graph 返回“令牌不包含权限,...”
- mysql - MySQL 5.7 和 8.0 的不同行为
- python - Numpy random - 指定多个边界和步骤
- vim - “--更多--”在我使用 :g/pattern 时被禁用
- php - 如何使用 Symfony 原则从我的数据库中克隆所有数据?
- mysql - SQL 查询以说明具有中间名的用户
- python-3.x - 如何在python中修复“找不到此类文件错误”
- microsoft-cognitive - 如何从 Azure 认知服务桌面访问 API 测试控制台?
- angular - 如何修复嵌套树?