Если у меня есть такой класс ...
public class Singleton
{
public static Singleton Instance { get; private set; }
}
И у него есть эти два метода ...
public static bool TryGetInstance(out Singleton instance)
{
return (instance = Singleton.instance) != null;
}
public static void GetInstance(Action<Singleton> callback)
{
if (instance != null)
{
callback?.Invoke(instance);
}
}
Один из них, как вы видите, присваивает значение к параметру out и возвращает bool, и его можно использовать следующим образом ...
if (Singleton.TryGetInstance(out Singleton singleton))
{
// Do something with singleton...
}
А другой проверяет, является ли экземпляр singleton ненулевым, выполняет ли он обратный вызов и может ли он использоваться следующим образом. ..
Singleton.GetInstance((singleton) => { /* Do something with singleton */ });
Есть ли реальная выгода, если я использую одно над другим? Есть ли прирост / потеря производительности?