Я не уверен на 100%, к чему вы клоните, новая переменная Singleton1 (в том смысле, что она создает другой синглтон) на самом деле невозможна по определению того, что Singleton должен применять для вашей системы.Новая переменная, которая указывает на синглтон, безусловно, возможна, вы можете сделать столько, сколько хотите указать на экземпляр.
Обычно Singleton1.Instance просто возвращает ссылки на один-единственный экземпляр синглтона, и obTestэто просто переменная, которая ссылается на этот объект.Затраты на выполнение var x = Singleton1.Instance для более быстрой обработки экземпляра в любое время, когда он вам нужен, минимальны и не допускают загрязнения глобального пространства имен.
Я бы не стал делать static var TheInstance = Singleton1.Instance
, поскольку Singleton1.Экземпляр уже предположительно находится в статической области видимости.
Если вам нужна хорошая реализация Singleton, вот мой:
https://stackoverflow.com/a/1010662/18255
public class SingletonBase<T> where T : class
{
static SingletonBase()
{
}
public static readonly T Instance =
typeof(T).InvokeMember(typeof(T).Name,
BindingFlags.CreateInstance |
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic,
null, null, null) as T;
}
Объявите ваш Singleton1 как этот, и высделано:
public class Singleton1 : SingletonBase<Singleton1> {
}
Это поточно-ориентированный (в отличие от большинства, включая тот, который указан здесь ) и ленивый экземпляр.