{
if (nullableType == null)
throw new ArgumentNullException ("nullableType");
- if (nullableType.IsGenericType && nullableType.GetGenericTypeDefinition () == typeof (Nullable<>))
- return nullableType.GetGenericArguments ()[0];
- else
- return null;
+
+ return nullableType.IsGenericType && !nullableType.IsGenericTypeDefinition && nullableType.GetGenericTypeDefinition () == typeof(Nullable<>) ?
+ nullableType.GetGenericArguments () [0] : null;
}
}
[Serializable]
- [DebuggerDisplay ("{DebuggerDisplay}")]
[DebuggerStepThrough]
public struct Nullable<T> where T: struct
{
#region Sync with runtime code
- [DebuggerBrowsable (DebuggerBrowsableState.Never)]
internal T value;
- [DebuggerBrowsable (DebuggerBrowsableState.Never)]
internal bool has_value;
#endregion
this.value = value;
}
- [DebuggerBrowsable (DebuggerBrowsableState.Never)]
- string DebuggerDisplay {
- get {
- return has_value ? value.ToString () : null;
- }
- }
-
- [DebuggerBrowsable (DebuggerBrowsableState.Never)]
public bool HasValue {
get { return has_value; }
}
- [DebuggerBrowsable (DebuggerBrowsableState.Never)]
public T Value {
get {
if (!has_value)
public T GetValueOrDefault ()
{
- return has_value ? value : default (T);
+ return value;
}
public T GetValueOrDefault (T defaultValue)