【发布时间】:2013-12-25 02:14:24
【问题描述】:
我在学习编程时第一次尝试创建命名空间。我希望有一种方法可以解决我遇到的不是特别混乱的问题,但本质上我有一个类对象,它保留两个嵌套类对象的两个字典。我需要能够将 NestedClassA 的字典传递给 NestedClassB 或允许 NestedClassB 以某种方式访问它...这是我正在尝试做的一个示例:
namespace MyFirstNamespace
{
public class BossClass
{
public Dictionary<int, NestedClassA> DictionaryA = new Dictionary<int, NestedClassA>();
public Dictionary<int, NestedClassB> DictionaryB = new Dictionary<int, NestedClassB>();
public class NestedClassA { ...arbitrary class definition... }
public class NestedClassB
{
public Dictionary<int, NestedClassA> PassedDictionary;
public NestedClassB() { }
public NestedClassB(Dictionary<int, NestedClassA> tempDic))
{
PassedDictionary = tempDic;
}
}
public BossClass() { ... arbitrary constructor ... }
...arbitrary dictionary population methods...
function void CreateAClassBInstance()
{
DictionaryB[n] = new NestedClassB(n, DictionaryA);
}
}
}
我的问题似乎是我无法在“NestedClassB”中对“NestedClassA”进行类型转换,因为它无法识别类型。是否可以访问 B 中的“NestedClassA”类型?我试过的都没有用。我是否必须传递“BossClass”的实例才能通过“Dictionary<int, MyFirstNamespace.BossClassInstance.NestedClassA>”引用类型?
任何帮助将不胜感激。需要明确的是,我希望将一个 REFERENCE 变量传递给所有 NestedClassA 成员的 Dictionary 的 NestedClassB,以便它们可以被 NestedClassB 操作。不可能是克隆。我知道这似乎是荒谬的实现,但对于我正在尝试做的事情,如果可能的话,它似乎是最有效的。
编辑:也许我根本不应该嵌套它们,但这会使它们更容易序列化,这就是我真的想这样做的原因。
(编辑 - 修正了我忘记在构造函数之前插入“public”的错字。)
【问题讨论】:
-
建议:当你开始编程时,我建议你一次尝试一件新事物。命名空间,好的,嵌套,没必要。留到以后再说吧。
-
在我看来,这不是一个特别不精确的问题。我敢肯定,如果没有嵌套类,我可以使这项工作完美无缺,而且,从此以后,我不会在这里问这个问题,因为否则我会尝试做的事情将是我已经知道该怎么做的事情。我似乎无法做的是让 NestingClassB 识别 NestingClassA 的类型。我不确定在类定义列表的顶部键入“namespace xxxx”是否过于繁重,以至于我无法了解是否可以交叉引用嵌套类。
-
我目前的看法是它需要直接访问“BossClass”的实例化,因为 BossClass 不是静态的。我希望有办法解决这个问题,但如果绝对必要,我可以从调用解决方案中传递实例。
标签: c# parameter-passing nested-class