1
如果我只想初始化私有变量一次或者它足以在下面的代码中创建“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>();
否。静态变量在类型的[类型初始化程序](http://csharpindepth.com/Articles/General/Beforefieldinit.aspx)中最多被初始化一次。 – dbc