gpt4 book ai didi

c# - 整个应用程序中使用的单个对象应该是静态的吗?

转载 作者:行者123 更新时间:2023-11-30 19:40:25 24 4
gpt4 key购买 nike

我正在编写一个基于历史价格分析股票的 C# 应用程序。我有一个保存数据(历史价格)的对象。所有数据都保存在这个对象中 - 我只需要它的一个实例,整个应用程序中的许多其他对象都使用该数据。

鉴于上述情况,将此对象设为静态不是更容易(也是更好的设计)吗?因为替代方法是我目前正在做的事情——在对象之间传递对同一个实例的数十个引用。

我仍然犹豫的原因是我知道 static 对象应该小心对待,因为我已经阅读了 this answer .就我而言,该对象不是简单的实用程序对象,也不是无状态的。数据正在加载到对象中并对其进行更改,但我的想法是这些更改仍需要在所有其他对象之间共享,而且我知道我不需要拥有此数据对象的两个不同实例。

对于我的案例,您认为最佳方法是什么?有没有我没有考虑过的替代解决方案?

最佳答案

您可以将其设为静态或使用 Singleton设计模式。我会使用 Singleton。

无需传递引用,Singleton 提供了一个全局访问点。

例子:

public class Singleton
{
private static Singleton instance;

private Singleton()
{}

public static Singleton GetInstance()
{
if(instance == null)
instance = new Singleton();

return instance;
}
}

私有(private)构造函数和 GetInstance() 函数确保对象只有一个实例。

如果你需要获取对象的引用来调用对象内部的函数,只需使用这个:

Singleton.GetInstance().FunctionName();

此外,这是惰性实例化,不是线程安全的(多线程程序),但您可以自己了解更多信息,应该很有趣!

关于c# - 整个应用程序中使用的单个对象应该是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com