我正在接管一个c#windows项目。在启动对象app()中,有_instance = this;
。这是什么意思?它只是一个实例,可以用于其他方法,如关机等?这是强迫单身人士的事吗?如果是,它如何强制只有一个实例?
_instance定义如下:
private static App _instance;
源代码在这里:
public partial class App : Application
{
private static App _instance;
private SplashView _splashView;
public App()
{
if (!NetworkConnectivityManager.CheckConnectivity())
{
Shutdown();
return;
}
try
{
try
{
AppServiceManager.Start();
}
catch
{
Retryer.DoWithRetries(delegate()
{
ActivateOtherInstance();
Shutdown();
return;
}, 4, 1000);
}
ShowSplashScreen();
ShutdownMode = ShutdownMode.OnExplicitShutdown;
_instance = this;
ExceptionManager.SubscribeToUnhandledAppDomainException();
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
}
public static void ShutdownApp()
{
_instance.Shutdown();
}
如果他们足以告诉我们,请告诉我。非常感谢。
答案 0 :(得分:3)
如果你问如何在C#中创建一个单例单词
class A
{
private static readonly A _instance = new A();
public virtual A instance
{
get
{
return _instance;
}
}
private A()
{
}
}
这是在C#中制作单例的典型方法。
对于您的代码,它取决于如何使用它。对于单身人士来说,这没有任何意义。
好的,我读了你的代码。
这只是一个糟糕的设计。它用于调用shutdown而不具有指向类实例的指针。
如果你碰巧在其他地方新上了这个课程,调用App.Shutdown将不会关闭所有应用程序。
如果您只创建一个App类,请使用适当的单例重写它。如果您同时运行多个App实例,请使用适当的实例管理器重写它。
答案 1 :(得分:0)
在某个类中没有其他逻辑,这种变量声明是多余的,也是不必要的,因为任何其他方法(如shutdown)都可以轻松引用this
。