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