有些时候我们需要判断某个类型是否是Nullable类型,并且可能需要知道它的原始类型,
比如在做些ORM相关工作时,就需要这方面的应用,如下代码使用可以实现这个要求
class Program { static void Main( string[] args ) { RL( );Type type = typeof( DateTime? ); Type originalType; if ( IsNullable( type , out originalType ) ) { WL( originalType.ToString( ) ); } else { WL( "NOT Nullable" ); } type = typeof( DateTime ); if ( IsNullable( type , out originalType ) ) { WL( originalType.ToString( ) ); } else { WL( "NOT Nullable" ); } RL( ); } private static bool IsNullable( Type p , out Type originalType ) { bool result = false; if ( p.IsGenericType && p.GetGenericTypeDefinition( ) == typeof( Nullable<> ) ) { result = true; originalType = p.GetGenericArguments( )[0]; } else { originalType = null; } return result; } #region Helper methods private static void WL( object text , params object[] args ) { Console.WriteLine( text.ToString( ) , args ); } private static void RL( ) { Console.ReadLine( ); } private static void Break( ) { System.Diagnostics.Debugger.Break( ); } #endregion }