我正在开发一个嵌套了类列表的项目。因此,当我想得到一个变量时,我的代码就像这样。
MainClass.subclass1[element1].subClass2[element2].subClass3[element3].value;
我想知道如何获得subClass3的别名,这样我就可以获取其中的所有变量而无需查看所有子类,如下所示。
subClass3Alias.value
在c ++中这很简单,只需指向一个指针,但C#实际上没有指针。
答案 0 :(得分:4)
不需要指针 - C#中的类型通常都是reference types,这意味着您可以复制它们并且它们将引用原始对象(如C ++中的指针):
var subclassAlias = MainClass.subclass1[element1].subClass2[element2].subClass3[element3];
现在您可以使用subclassAlias.value
。
如果您的类型恰好是值类型,则会发生稍微不同的事情:在这种情况下,上述内容仍然有效 - 但subclassAlias
将是原始值的值副本 ,意味着对subclassAlias
的更改不会反映在原始对象中。
也就是说,这看起来像是可疑代码 - 通常这种深层次的嵌套是设计糟糕的标志并违反了Law of Demeter。
(顺便说一下,在C ++中你也不会使用指针。)