将多个字段作为参数传递给其他类中的方法,或者传递“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。我的程序中有一个长调用树,它跨两个类/线程运行。我可以将令牌向下传递到调用树中,也可以创建它的公共静态属性,以避免完全不必传递它。我应该选择哪一个?

提前非常感谢。

将多个字段作为参数传递给其他类中的方法,或者传递“this”并使字段公开

取决于应用程序,将字段或方法作为 statis 可能非常危险,因为它们在其所有者类的每个实例中都是相同的,但大多数时候,当类中需要多个 A 的属性时,比如说 B 那么类 B 将保存类 A 的实例而不是它的属性,并将使用该实例来访问字段,因此只需将其AB 中传递就足够了