using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
+using System.Diagnostics;
namespace System
{
{
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]
+ [DebuggerStepThrough]
public struct Nullable<T> where T: struct
{
#region Sync with runtime code
public T GetValueOrDefault ()
{
- return has_value ? value : default (T);
+ return value;
}
public T GetValueOrDefault (T defaultValue)