长查找的别名

时间:2014-07-09 14:47:15

标签: c# alias

我正在开发一个嵌套了类列表的项目。因此,当我想得到一个变量时,我的代码就像这样。

MainClass.subclass1[element1].subClass2[element2].subClass3[element3].value;

我想知道如何获得subClass3的别名,这样我就可以获取其中的所有变量而无需查看所有子类,如下所示。

subClass3Alias.value

在c ++中这很简单,只需指向一个指针,但C#实际上没有指针。

1 个答案:

答案 0 :(得分:4)

不需要指针 - C#中的类型通常都是reference types,这意味着您可以复制它们并且它们将引用原始对象(如C ++中的指针):

var subclassAlias = MainClass.subclass1[element1].subClass2[element2].subClass3[element3];

现在您可以使用subclassAlias.value

如果您的类型恰好是值类型,则会发生稍微不同的事情:在这种情况下,上述内容仍然有效 - 但subclassAlias将是原始值的值副本 ,意味着对subclassAlias的更改不会反映在原始对象中。

也就是说,这看起来像是可疑代码 - 通常这种深层次的嵌套是设计糟糕的标志并违反了Law of Demeter

(顺便说一下,在C ++中你也不会使用指针。)