public static CultureInfo ReadOnly(CultureInfo ci) { if (ci == null) { throw new ArgumentNullException("ci"); } if (ci.m_isReadOnly) { return(ci); } else { CultureInfo new_ci = (CultureInfo)ci.Clone(); new_ci.m_isReadOnly = true; if (new_ci.numInfo != null) { new_ci.numInfo = NumberFormatInfo.ReadOnly(new_ci.numInfo); } if (new_ci.dateTimeInfo != null) { new_ci.dateTimeInfo = DateTimeFormatInfo.ReadOnly(new_ci.dateTimeInfo); } if (new_ci.textInfo != null) { new_ci.textInfo = TextInfo.ReadOnly(new_ci.textInfo); } return(new_ci); } }
public static CultureInfo ReadOnly(CultureInfo ci) { if (ci == null) { throw new ArgumentNullException("ci"); } if (ci.m_isReadOnly) { return(ci); } else { CultureInfo new_ci = (CultureInfo)ci.Clone(); new_ci.m_isReadOnly = true; if (new_ci.numInfo != null) { new_ci.numInfo = NumberFormatInfo.ReadOnly(new_ci.numInfo); } if (new_ci.dateTimeInfo != null) { new_ci.dateTimeInfo = DateTimeFormatInfo.ReadOnly(new_ci.dateTimeInfo); } #if NET_2_0 // TextInfo doesn't have a ReadOnly method in 1.1... if (new_ci.textInfo != null) { new_ci.textInfo = TextInfo.ReadOnly(new_ci.textInfo); } #endif return(new_ci); } }
public static CultureInfo ReadOnly(CultureInfo ci) { if (ci == null) { throw new ArgumentNullException("ci"); } Contract.Ensures(Contract.Result <CultureInfo>() != null); Contract.EndContractBlock(); if (ci.IsReadOnly) { return(ci); } CultureInfo newInfo = (CultureInfo)(ci.MemberwiseClone()); if (!ci.IsNeutralCulture) { //If this is exactly our type, we can make certain optimizations so that we don't allocate NumberFormatInfo or DTFI unless //they've already been allocated. If this is a derived type, we'll take a more generic codepath. if (!ci.m_isInherited) { if (ci.dateTimeInfo != null) { newInfo.dateTimeInfo = DateTimeFormatInfo.ReadOnly(ci.dateTimeInfo); } if (ci.numInfo != null) { newInfo.numInfo = NumberFormatInfo.ReadOnly(ci.numInfo); } } else { newInfo.DateTimeFormat = DateTimeFormatInfo.ReadOnly(ci.DateTimeFormat); newInfo.NumberFormat = NumberFormatInfo.ReadOnly(ci.NumberFormat); } } if (ci._textInfo != null) { newInfo._textInfo = TextInfo.ReadOnly(ci._textInfo); } if (ci._calendar != null) { newInfo._calendar = Calendar.ReadOnly(ci._calendar); } // Don't set the read-only flag too early. // We should set the read-only flag here. Otherwise, info.DateTimeFormat will not be able to set. newInfo._isReadOnly = true; return(newInfo); }
public static CultureInfo ReadOnly(CultureInfo ci) { if (ci == null) { throw new ArgumentNullException("ci"); } if (ci.IsReadOnly) { return(ci); } CultureInfo info = (CultureInfo)ci.MemberwiseClone(); if (!ci.IsNeutralCulture) { if (!ci.m_isInherited) { if (ci.dateTimeInfo != null) { info.dateTimeInfo = DateTimeFormatInfo.ReadOnly(ci.dateTimeInfo); } if (ci.numInfo != null) { info.numInfo = NumberFormatInfo.ReadOnly(ci.numInfo); } } else { info.DateTimeFormat = DateTimeFormatInfo.ReadOnly(ci.DateTimeFormat); info.NumberFormat = NumberFormatInfo.ReadOnly(ci.NumberFormat); } } if (ci.textInfo != null) { info.textInfo = System.Globalization.TextInfo.ReadOnly(ci.textInfo); } if (ci.calendar != null) { info.calendar = System.Globalization.Calendar.ReadOnly(ci.calendar); } info.m_isReadOnly = true; return(info); }
/// <include file='doc\CultureInfo.uex' path='docs/doc[@for="CultureInfo.ReadOnly"]/*' /> public static CultureInfo ReadOnly(CultureInfo ci) { if (ci == null) { throw new ArgumentNullException("ci"); } if (ci.IsReadOnly) { return(ci); } CultureInfo info = (CultureInfo)(ci.MemberwiseClone()); //If this is exactly our type, we can make certain optimizations so that we don't allocate NumberFormatInfo or DTFI unless //they've already been allocated. If this is a derived type, we'll take a more generic codepath. if (ci.GetType() == typeof(CultureInfo)) { if (ci.dateTimeInfo != null) { info.dateTimeInfo = DateTimeFormatInfo.ReadOnly(ci.dateTimeInfo); } if (ci.numInfo != null) { info.numInfo = NumberFormatInfo.ReadOnly(ci.numInfo); } } else { info.DateTimeFormat = DateTimeFormatInfo.ReadOnly(ci.DateTimeFormat); info.NumberFormat = NumberFormatInfo.ReadOnly(ci.NumberFormat); } // Don't set the read-only flag too early. // We should set the read-only flag here. Otherwise, info.DateTimeFormat will not be able to set. info.m_isReadOnly = true; return(info); }