将多个字段作为参数传递给其他类中的方法,或者传递“this”并使字段公开
本文关键字:字段 或者 this 参数传递 其他 方法 | 更新日期: 2023-09-27 18:33:48
我想我错过了面向对象编程的一个基本概念。
假设类 B 中的几个方法想要访问类 A 中声明的多个字段。我是否应该将所有字段作为参数传递给方法,从类 A 开始,一直沿类 B 中可能很长的调用树向下传递? classBInstance.StartOfLongCallTree(p1, p2, p3)
或者,我是否应该公开字段并this
传递给方法。这样我只需要传递一个参数:classBInstance.StartOfLongCallTree(this)
。
或者,我应该将字段/属性设为静态并在不传递任何参数的情况下访问它们?这仅适用于字段不需要明显因实例而异的情况。 classBInstance.StartOfLongCallTree()
. ClassA.p1
等,以访问静态字段。
一个例子是取消线程中的循环的 CancelToken。我的程序中有一个长调用树,它跨两个类/线程运行。我可以将令牌向下传递到调用树中,也可以创建它的公共静态属性,以避免完全不必传递它。我应该选择哪一个?
提前非常感谢。
取决于应用程序,将字段或方法作为 statis 可能非常危险,因为它们在其所有者类的每个实例中都是相同的,但大多数时候,当类中需要多个 A 的属性时,比如说 B 那么类 B 将保存类 A 的实例而不是它的属性,并将使用该实例来访问字段,因此只需将其在 A 到 B 中传递就足够了