You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写GetName()方法打印C#集合中包含的变量名称?

如何获取集合中变量的名称?

首先要明确:当你把变量添加到List<object>时,集合里只保存了变量的值,变量名称属于编译期的元数据,运行时已经丢失了,所以直接通过item.GetName()这种方式是无法实现的。你需要在存储变量时同时保存它的名称,下面是两种可行的方案:

方案1:使用字典存储键值对

用Dictionary<string, object>把变量名作为键,变量值作为值,结合nameof关键字可以避免硬编码字符串:

// 初始化字典,同时保存变量名和值
var collection = new Dictionary<string, object>
{
    { nameof(b), b },
    { nameof(sb), sb },
    { nameof(shrt), shrt },
    { nameof(ushrt), ushrt },
    { nameof(i), i },
    { nameof(ui), ui },
    { nameof(lng), lng },
    { nameof(ulng), ulng },
    { nameof(f), f },
    { nameof(d), d },
    { nameof(dec), dec },
    { nameof(c), c },
    { nameof(str), str },
    { nameof(b1), b1 },
    { nameof(b2), b2 },
    { nameof(b3), b3 },
    { nameof(o1), o1 },
    { nameof(o2), o2 },
    { nameof(o3), o3 },
    { nameof(o4), o4 },
    { nameof(dt), dt }
};

// 遍历输出
foreach (var kvp in collection)
{
    Console.WriteLine("variable name : " + kvp.Key);
    Console.WriteLine("variable value: " + kvp.Value);
    Console.WriteLine("variable type : " + kvp.Value.GetType().Name);
    Console.WriteLine("***************************** ");
}

nameof会在编译时解析成变量的字符串名称,即使后续变量重命名,IDE也会自动同步这个字符串,减少出错概率。

方案2:自定义类封装变量名和值

如果需要更灵活的扩展(比如后续添加更多属性),可以自定义一个类来保存变量的名称和值:

// 自定义类
public class NamedVariable
{
    public string Name { get; set; }
    public object Value { get; set; }
}

// 初始化集合
var collection = new List<NamedVariable>
{
    new NamedVariable { Name = nameof(b), Value = b },
    new NamedVariable { Name = nameof(sb), Value = sb },
    // 其他变量按同样方式添加
};

// 遍历输出
foreach (var item in collection)
{
    Console.WriteLine("variable name : " + item.Name);
    Console.WriteLine("variable value: " + item.Value);
    Console.WriteLine("variable type : " + item.Value.GetType().Name);
    Console.WriteLine("***************************** ");
}

这两种方案都能解决你的问题,核心思路就是在存储变量时主动保留名称信息,因为运行时无法从变量值反向获取原变量名。

内容的提问来源于stack exchange,提问作者Recep Kara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:06:48