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

如何将以字符串命名的Dictionary元素设为全局变量?

关于动态字符串命名全局变量的实现方案

首先明确:没法直接让ESScommand[sample.Data.ESS_name]成为独立的全局变量,但可以通过让存储它的字典成为全局对象,间接实现用字符串作为“全局变量名”访问对象的需求,这是C#里最可行的方案。

具体实现步骤

  • 将存储字典定义为全局静态成员
    可以创建一个专门的全局静态类来存放字典,确保整个应用域内都能访问:
    public static class GlobalStorage
    {
        // 多线程场景优先用ConcurrentDictionary保证线程安全
        public static ConcurrentDictionary<string, ESS_command> ESSCommands = new ConcurrentDictionary<string, ESS_command>();
    }
    
  • 赋值与全局访问
    赋值时直接操作全局字典:
    // 以动态字符串为键,存入目标对象
    GlobalStorage.ESSCommands[sample.Data.ESS_name] = sample.Data;
    
    在其他任意位置访问时:
    // 通过字符串键获取全局存储的对象
    ESS_command targetCommand = GlobalStorage.ESSCommands[targetESSName];
    

为什么不能直接创建动态命名的全局变量

C#是静态类型语言,所有变量名称必须在编译阶段确定,运行时无法动态生成新的全局变量标识符。用字典存储的方式,本质是用键值对模拟动态命名的存储容器,是这类需求的标准替代方案。

注意事项

  • 多线程环境下必须使用线程安全集合(比如ConcurrentDictionary),避免并发操作导致的异常或数据错乱。
  • 要确保sample.Data.ESS_name的唯一性,否则重复的键会覆盖之前存储的对象。

内容的提问来源于stack exchange,提问作者GyeongHun Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:30:45