gpt4 book ai didi

C# 单例定义

转载 作者:太空狗 更新时间:2023-10-30 00:42:40 24 4
gpt4 key购买 nike

我看到了这样的实现:

class MyClass
{
private static readonly MyClass _instance = new MyClass();

public static MyClass Instance{
get{ return _instance; }
}
}

为什么不简单点呢?

class MyClass
{
public static readonly MyClass Instance = new MyClass();
}

最佳答案

可以像这样公开公共(public)字段 - 但我不想这样做。如果将其保留为属性,则可以稍后更改实现。例如,假设您稍后添加了一个静态方法,您希望能够在不初始化单例的情况下调用该方法 - 使用属性版本,您可以将代码更改为:

public sealed class MyClass
{
public static MyClass Instance { get { return InstanceHolder.instance; } }

private MyClass() {}

private static class InstanceHolder
{
internal static readonly MyClass instance = new MyClass();
}

public static void Foo()
{
// Calling this won't initialize the singleton
}
}

(对于原始版本,单例可能已初始化,也可能未初始化 - 这取决于 CLR。​​)

这只是一个示例,说明您稍后可能希望更改实现的原因。使用属性,您可以做到这一点 - 使用字段,您不能。

关于C# 单例定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146321/

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