C#中的匿名变量用法?

时间:2014-09-24 06:28:05

标签: c# variables reflection

是否有可能(以及如何)在方法匿名中使用声明的变量?不在代码中使用它们的名称。我必须用名称声明它们(为了便于阅读和调试)。但我想不用它们。

我希望可以通过反射列出类的所有方法名称。

<小时/> 示例:

private static void TestVars()
{
    string dsjkfd4378957439898 = "hello world";
    string hgf43789 = "hello world2";
    string ntgdklf4589 = "hello world3";
    // more strings

    // print names of ALL string variables above (and their values)
    // like this but without knowing the names of the string variables
    Console.WriteLine("dsjkfd4378957439898" + " = " + dsjkfd4378957439898);
    // ...
}

1 个答案:

答案 0 :(得分:4)

没有。不是。变量必须有名称。

我会冒险猜测并说出你可能想要的是一个正确的数据结构,例如Dictionary<TKey, TValue>(如果你想要名字)或List<T>(如果你不想要的话)名)。一个合适的调试器将能够检查数据结构。

您无法列出变量的原因是变量名称之类的内容未存储在生成的字节码中 - 所有剩下的都可能是索引。此外,一些变量可能会被优化掉并在非调试版本中完全消失。变量名称和位置将存储在调试构建的调试信息中,但是没有标准的方法来访问它,因为它的信息应该仅由调试器使用而不是您自己的逻辑。