代码还能这么写?

uf96800 2016-08-01 05:57:48
今天看一个大牛的源码,谁帮解释下有没有问题。
public class A{

B aa;
MA bb;
MB cc;
...........
}
public class B {

A dd;
...........
}
完全理解不了,有问题吗
...全文
498 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34361392 2016-08-10
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
class Node
{
Child Child;
}
class Child
{
Node Parent;
}
这样写很正常吧?
存储一个树可以这样用,好像是不错的 不过最好把Node中的Child改成List<Child>
爱睡觉的阿狸 2016-08-03
  • 打赏
  • 举报
回复
是大牛就没问题,不是大牛就一堆出来找问题的了。
grearo 2016-08-03
  • 打赏
  • 举报
回复
主要在与,什么时候会初始化要循环调用的类,如果只在赋值时会用到,不会再初始化中用到,那他一直都是null,没有影响的,类似于Form类的 ParentForm,ChildForm等
grearo 2016-08-03
  • 打赏
  • 举报
回复

public class A
    {
        A a;
        B b;
        public A()
        { }
    }
    public class B
    {
        A a;
        B b;
        public B()
        { }
    }
这样是可以的。

public class A
    {
        A a;
        B b;
        public A()
        { b = new B(); }
    }
    public class B
    {
        A a;
        B b;
        public B()
        { a = new A(); }
    }
这样就死循环了
我叫小菜菜 2016-08-03
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
class Node
{
Child Child;
}
class Child
{
Node Parent;
}
这样写很正常吧?
感觉不大正常因为Child本身也是Node当然这个跟楼猪的不大一样hhh
class Node
{
String name;
Node[]  child;
Node parent;
}
所谓子子孙孙无穷尽也,像楼猪所说的大神那般玩弄奇技淫巧,始终是不大好的。很容易失传。
全栈极简 2016-08-03
  • 打赏
  • 举报
回复
最好不要这么写,处理不当会造成循环引用(死循环)。
wangyu0517 2016-08-02
  • 打赏
  • 举报
回复
C#可以这样写,C++不能。像A dd;这种,在C#表示一个引用,相当与4字节的指针。但是在C++中A dd;表示一个对象,这样会出现无限包含,你包含我,我包含你。以C++的链表来理解C#这段代码就比较清晰了。C#中的A dd,狭义上和C++中的A *dd等价。
Poopaye 2016-08-01
  • 打赏
  • 举报
回复
没问题啊,相比c++也就少了事先声明这一步
SoulRed 2016-08-01
  • 打赏
  • 举报
回复
这是C#不是C++ 或者C。 所以这种写法没问题的,不过貌似这写法很不常见
圣殿骑士18 2016-08-01
  • 打赏
  • 举报
回复
也不算特殊吧,如果从模式上来讲,是观察者模式的变形。举个例子: 1、母猪(A)需要照料它生下的所有小猪(B)因此,母猪含有小猪的定义。 2、母猪(A)生产下每一只小猪(B),就将自己的引用传给小猪(B),这样小猪饿了才会回来找母猪,或者嗷嗷叫的通知母猪。
秋的红果实 2016-08-01
  • 打赏
  • 举报
回复
C#正常,还可以这样

class C
{
    private C C_1;
    //……
}
threenewbee 2016-08-01
  • 打赏
  • 举报
回复
没问题啊,对象作为字段。 比如TextBox控件的Font属性,就是一个Font对象。
  • 打赏
  • 举报
回复
class Node
{
Child Child;
}
class Child
{
Node Parent;
}
这样写很正常吧?
sgyiliya 2016-08-01
  • 打赏
  • 举报
回复
这叫做包含类,没有问题啊。
橙色阳光 2016-08-01
  • 打赏
  • 举报
回复
独特风格 自成一派 写的人酸爽 改的人痛苦
谷凯Jump 2016-08-01
  • 打赏
  • 举报
回复
确定是大牛?
wenyiyi 2016-08-01
  • 打赏
  • 举报
回复
这种还真是第一次见到
software_artisan 2016-08-01
  • 打赏
  • 举报
回复
循环引用。。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧