Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以通过反射获得局部变量?_C#_C# 4.0 - Fatal编程技术网

C# 是否可以通过反射获得局部变量?

C# 是否可以通过反射获得局部变量?,c#,c#-4.0,C#,C# 4.0,我有一个至少有50个局部变量的方法。我需要从字符串值中选择一个变量。是否可以使用C反射访问局部变量 编辑: 真正的答案是否定的 编辑操作后:确定编号。名称在编译时被“丢弃” 您可以通过Method.Body获得IL指令 使用Cecil反编译器来“猜测”变量是什么,尽管没有名称。然而,通常很难区分重用的temp和变量,并且所有的语法糖分都丢失了 另外:像其他评论那样修复代码:我有一个至少有50个局部变量的方法。。。有点不对劲!你能举例说明你的代码吗?也许有更好的方法来做你想做的事。修正你的代码,伙

我有一个至少有50个局部变量的方法。我需要从字符串值中选择一个变量。是否可以使用C反射访问局部变量

编辑:

真正的答案是否定的

编辑操作后:确定编号。名称在编译时被“丢弃”

您可以通过Method.Body获得IL指令

使用Cecil反编译器来“猜测”变量是什么,尽管没有名称。然而,通常很难区分重用的temp和变量,并且所有的语法糖分都丢失了


另外:像其他评论那样修复代码:

我有一个至少有50个局部变量的方法。。。有点不对劲!你能举例说明你的代码吗?也许有更好的方法来做你想做的事。修正你的代码,伙计。我们不会告诉您如何让问题变得更糟。在问题结束时,无法将此添加为答案,但请尝试用字典替换所有这些。有趣!这不是一个真正的问题。你们期待什么样的问题。你们能在运行时从IL局部变量转换到它们的当前值吗?等等。在问题结束后,您是如何将此信息偷偷地输入的?@sbi:如果您不刷新浏览器,我认为您可以在问题结束后几分钟内发布未完成的答案。@RMartinho:不使用未记录的实现详细信息。查看如何利用实现细节。非常有趣。不推荐在调试构建中,这不是只能半可靠地工作吗?我假设在发布版本中,局部可以以某种方式进行优化。
void A()
{
    var a1 = List<MyClass>();
    var a2 = List<MyClass>();
    var a3 = List<MyClass>();
    var a4 = List<MyClass>();
    var a5 = List<MyClass>();
    ........................
    ........................
    ........................
    // I have a string value found at runtime. The possible values of it are a1,a2,a3,a4,a5,.... I need to select one
}