我认为我错过了面向对象编程的基本概念。
假设B类中的几个方法想要访问在A类中声明的几个字段。我是否应该将所有字段作为参数传递给方法,从A类开始,然后沿着B类中潜在的长调用树? classBInstance.StartOfLongCallTree(p1, p2, p3)
或者,我应该公开字段并将this
传递给方法。这样我只需传递一个参数:classBInstance.StartOfLongCallTree(this)
。
或者,我应该将fields / properties设置为static并在不传递任何参数的情况下访问它们吗?这仅适用于字段不需要明显地跨实例变化的情况。 classBInstance.StartOfLongCallTree()
。 ClassA.p1
等,以访问静态字段。
一个例子是CancellationToken来取消线程中的循环。我的程序中有一个长调用树,它跨越两个类/线程。我可以将令牌传递给调用树,或者我可以创建它的公共静态属性,以避免必须传递它。我应该选择哪一个?
提前多多感谢。
答案 0 :(得分:0)
取决于应用程序,将字段或方法设为 statis 可能非常危险,因为它们在其所有者类的每个实例中都是相同的,但大多数时候是不止一个属性让我们说课程 A 在课堂上要求 B 然后课程 B 将持有类的实例 A 而不是它的属性,并将使用该实例访问字段,因此只需将此内的 A 传递给乙强>