Должен ли я указывать общедоступный метод как статический, если я хочу инициализировать закрытую переменную только один раз или этого достаточно для создания свойства «singleton» в следующем коде?Закрытое статическое свойство в C#
public IEqualityComparer<T> GetComparer<T>()
{
if (typeof (IUserShift).IsAssignableFrom(typeof (T)))
return UserShiftComparer.Value as IEqualityComparer<T>;
throw new ArgumentOutOfRangeException("There is no avaliable comparer for the type!", nameof(T));
}
private static readonly Lazy<UserShiftTrackingComparer> UserShiftComparer = new Lazy<UserShiftTrackingComparer>();
№. Статическая переменная инициализируется не более одного раза, в [type initializer] (http://csharpindepth.com/Articles/General/Beforefieldinit.aspx) для типа. – dbc