Static vs Instance 成員在 MainWindow 中

本文关键字:MainWindow vs Instance Static | 更新日期: 2023-09-27 18:36:22

我理解静态和实例的概念,但我很困惑,当我有一个只存在 1 个实例的类时,我应该使用哪个实例,这是我的应用程序开始时调用的实例(=Application.Current.MainWindow)

我想保留一个列表,在我的程序中,我需要在整个过程中使用不同的类。我应该让它成为静态的,因为永远不会存在 2 个 MainWindow 实例吗?或者我应该让它成为非静态的,因为它属于实例听起来是正确的?

如果我选择使其非静态,这也意味着我总是需要在"(MainWindow)Application.Current.MainWindow"的其他类中引用它,这很烦人。

在这里将列表固定会"不好"吗?

Static vs Instance 成員在 MainWindow 中

静态似乎

不是那么大的问题。 不过,如果您觉得很奇怪,您可以制作一个程序其余部分使用的MainWindow"单例"。

查看文档:http://msdn.microsoft.com/en-us/library/ff650316.aspx

如果使用实例模式,它将为依赖关系注入和模块发现铺平道路,这反过来又有助于对使用该服务的组件进行单元测试。

实例模式还提供了后期绑定,如果类需要一些在运行时之前未知的东西,这将非常有用。 最后,实例模式启用了"可变性"。

如果您的应用程序是通过各种服务的交互构建的,则静态模式可能更合适。

两者之间的性能和内存占用差异可以忽略不计。

如果不看到你的代码或了解你的工作文化,很难说。

恕我直言:只要你关于"只有一个实例"的假设成立,那么你就可以摆脱静态属性和方法。这让我觉得有点可疑。

如果您是与我一起工作的初级或中级人员,那么我更希望您练习使用实例属性、方法和事件的习惯,并保留在需要时使用静态成员。

不过只是我的 2c。对此意见会有所不同。

Servy上面的评论得到了我的认可,顺便说一句。

我认为将其静态化是不好的,但是如果您的程序小而简洁,则不太可能目睹副作用,从而得出相同的结论。

此列表包含可能需要与其他类共享的项目,可以包含在主窗口的单独类中,并且此类实现的接口可以公开与列表访问或操作相关的所需功能。

您可能想尝试阅读有关"依赖注入"的信息。您可以让 IOC 容器控制列表封装类的生存期,并且仅向其他应用程序类公开接口。