将几个字段作为参数传递给其他类中的方法,或者传递`this`并将字段设为公共字段

时间:2014-12-10 15:43:38

标签: c# field parameter-passing cancellation

我认为我错过了面向对象编程的基本概念。

假设B类中的几个方法想要访问在A类中声明的几个字段。我是否应该将所有字段作为参数传递给方法,从A类开始,然后沿着B类中潜在的长调用树? classBInstance.StartOfLongCallTree(p1, p2, p3)

或者,我应该公开字段并将this传递给方法。这样我只需传递一个参数:classBInstance.StartOfLongCallTree(this)

或者,我应该将fields / properties设置为static并在不传递任何参数的情况下访问它们吗?这仅适用于字段不需要明显地跨实例变化的情况。 classBInstance.StartOfLongCallTree()ClassA.p1等,以访问静态字段。

一个例子是CancellationToken来取消线程中的循环。我的程序中有一个长调用树,它跨越两个类/线程。我可以将令牌传递给调用树,或者我可以创建它的公共静态属性,以避免必须传递它。我应该选择哪一个?

提前多多感谢。

1 个答案:

答案 0 :(得分:0)

取决于应用程序,将字段或方法设为 statis 可能非常危险,因为它们在其所有者类的每个实例中都是相同的,但大多数时候是不止一个属性让我们说课程 A 在课堂上要求 B 然后课程 B 将持有类的实例 A 而不是它的属性,并将使用该实例访问字段,因此只需将内的 A 传递给