Следует ли объявлять переменные-члены в singleton как статические?

Просматривая Интернет, я увидел простой шаблон, который реализует (поток -безопасный )синглтон (в C #).

public sealed class MySingleton
{
    private static readonly MySingleton _instance = new MySingleton();

    private string[] _data = new string[10];

    // Private constructor, so no outsiders have access.
    private MySingleton()
    {
        // Initialize _data member here
    }

    // Static method to provide access to instance
    public static MySingleton Instance
    {
      get { return _instance; }
    }

    public string GetStringCount
    {
        return _data.Length;
    }

}

Я понимаю, что член _instanceдолжен быть объявлен как статический, поскольку доступ к нему осуществляется из статического метода Instance().

Но следует ли объявлять другие члены статическими? По определению синглтон существует только один раз, поэтому члены также могут существовать только один раз (для одного экземпляра ), точно так же, как статические переменные существуют только один раз.

Должен ли я объявить _dataстатическим?

  • Будут ли какие-либо функциональные различия?
  • Есть разница в производительности?
  • Есть ли другие причины предпочесть статический или -не статический?
5
задан OrenIshShalom 28 October 2017 в 15:29
поделиться