c# - 使用包含变量名称的字符串访问变量

标签 c# string variables reflection

<分区>

我正在从数据库中读取字符串变量的名称(例如“_datafile”)。我想知道如何使用此字符串访问程序中的命名变量。

我已经尝试过使用字典、哈希表和 switch-case 语句,但我想让变量动态地自行解析。这可能吗?

最佳答案

你的意思是想把字段名作为字符串来获取字段的值吗?

public class MyClass
{
    public string _datafile;

    public MyClass()
    {
        _datafile = "Hello";
    }

    public void PrintField()
    {
        var result = this.GetType().GetField("_datafile").GetValue(this); 
        Console.WriteLine(result); // will print Hello
    }
}

编辑: @Rick,回复您的评论:

public class MyClass
{
    public IEnumerable<string> _parameters = new[] { "Val1", "Val2", "Val3" };

    public void PrintField()
    {
        var parameters = this.GetType().GetField("_parameters").GetValue(this) as IEnumerable;

        // Prints:
        // Val1
        // Val2
        // Val3
        foreach(var item in parameters)
        {
            Console.WriteLine(item);
        }
    }
}

关于c# - 使用包含变量名称的字符串访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122241/

相关文章:

C#,在 for..loop 中声明一个变量,它会降低性能吗?

c - 在c中对数组进行排序

string - 使用 nasm 从 dx 打印十六进制

variables - 如何检查 Kotlin 变量的类型

c# - 在 C# 中保存相同类型的有序值对的最佳类型是什么?

c# - 将复杂对象从 View 传递到 Controller

c# - 在 GridView 中获取 ASP.NET HyperLinkField 的文本

c# - 用于包装 C 库的 P/Invoke 或 C++/CLI

java - Java中如何对对象数组进行排序?

Javascript 命名空间仅适用于 var