C# 使用分部类访问Dictionary时Add方法调用失败问题求助
问题排查
- 第一,
ExampleDictionary类未对外暴露Dictionary的操作方法:你将_dict声明为私有字段,外部无法直接访问它的Add方法,你需要在ExampleDictionary里封装Add方法,或者直接将字典公开。 - 第二,类作用域下不能直接写执行语句:
instanceOfDict.Add(1, "Test1");这行代码直接写在ClassA的成员声明区域,C#不支持这种写法,所有执行逻辑必须放在构造函数、方法等代码块内部。 - 第三,静态方法无法访问实例成员:
FunctionA是静态方法,而instanceOfDict是ClassA的实例字段,静态上下文不能直接访问非静态成员。
修复方案
第一步:修改FilenameABC.cs中的ExampleDictionary定义
namespace Namespace1 { partial class ClassA { public class ExampleDictionary { private Dictionary<int, string> _dict; public ExampleDictionary() { _dict = new Dictionary<int, string>(); } // 对外封装Add方法,也可以根据需求封装其他字典操作,或者直接公开只读字典属性 public void Add(int key, string value) { _dict.Add(key, value); } } } }
第二步:修改FilenameDEF.cs的代码,解决语法冲突
namespace Namespace1 { partial class ClassA { // 如果要在静态方法中访问,需要将实例声明为静态 static ExampleDictionary instanceOfDict = new ExampleDictionary(); // 初始化逻辑放到构造函数中执行 public ClassA() { instanceOfDict.Add(1, "Test1"); } public static void FunctionA() { for (int i = 0; i < 10; i++) { string text = $"Test{i}"; instanceOfDict.Add(i, text); } } } }
内容的提问来源于stack exchange,提问作者roccaforte
相关产品推荐
相关产品推荐

