C# 静态值与传递参数

C# 静态值与传递参数,c#,C#,我的情况是,我必须在2-3个独立的班级上下传递列表。现在我主要是使用参数传递列表,所以所有3个类都会得到列表。我是否应该使用静态列表而不是将列表传递到所有类,以简化代码,如Class23.ListObjects.Add(),然后在操作完成后释放静态值,以便下一个操作以空列表开始。现在感觉参数越来越多,我很困惑列表是否有正确的值,忘记将列表传递给下一个类,等等。你怎么看?在编码实践中,使用静态变量或全局变量是不好的,传递参数被认为是好的。我建议您创建一个新类,该类表示各种类执行的组合操作(如果愿意

我的情况是,我必须在2-3个独立的班级上下传递
列表
。现在我主要是使用参数传递列表,所以所有3个类都会得到列表。我是否应该使用静态列表而不是将列表传递到所有类,以简化代码,如
Class23.ListObjects.Add()
,然后在操作完成后释放静态值,以便下一个操作以空列表开始。现在感觉参数越来越多,我很困惑列表是否有正确的值,忘记将列表传递给下一个类,等等。你怎么看?

在编码实践中,使用静态变量或全局变量是不好的,传递参数被认为是好的。

我建议您创建一个新类,该类表示各种类执行的组合操作(如果愿意,可以创建一个“上下文”类)。执行操作所需的值可以作为该上下文中的实例变量,与执行工作时使用的类的实例一起保存


这样,您可以避免在避免使用“全局”变量的同时传递内容(随着代码的发展,这可能会变得有些难看)。数据正好在它需要的范围内,并在整个操作完成时进行处理。

如果使用静态参数,如果这些函数在代码中的多个位置使用,尤其是在涉及线程的情况下,则会有获取损坏数据的风险


例如,假设类A需要使用作用于静态列表的函数。在这些函数完成之前,类B也尝试使用它们,导致列表从两个调用中获取数据,因为在这两种情况下都使用相同的静态列表。

上下文概念抽象在这里听起来很合理,尽管我不太确定确切的问题是什么,但是我不认为静态成员是好的做法。@zinking:同意,很少(但有些)情况下,
static
是最佳选择。我觉得在这里用不合适。