C\#에서 어떤 유형 이 암시 적 형식 으로 전환 할 수 있 는 지 판단 합 니 다.

C\#에서 일부 유형 은 암시 적 으로 전환 할 수 있 습 니 다.저 는 암시 적 으로 전환 할 수 있 는 유형 을 정리 하여 참고 하 시기 바 랍 니 다

     static private bool CanConvert(Type from, Type to)   
    {          
       if (from.IsPrimitive && to.IsPrimitive) 
          {              
   TypeCode typeCodeFrom = Type.GetTypeCode(from);   
   TypeCode typeCodeTo = Type.GetTypeCode(to);      
   if (typeCodeFrom == typeCodeTo)            
   return true;              
   if (typeCodeFrom == TypeCode.Char)   
   switch (typeCodeTo)         
   {                   
   case TypeCode.UInt16: return true;    
   case TypeCode.UInt32: return true;     
   case TypeCode.Int32: return true;        
   case TypeCode.UInt64: return true;           
   case TypeCode.Int64: return true;               
   case TypeCode.Single: return true;              
   case TypeCode.Double: return true;                  
   default: return false;               
   }              
   // Possible conversions from Byte follow.      
   if (typeCodeFrom == TypeCode.Byte)    
   switch (typeCodeTo)              
   {                      
   case TypeCode.Char: return true;      
   case TypeCode.UInt16: return true;         
   case TypeCode.Int16: return true;                   
   case TypeCode.UInt32: return true;               
   case TypeCode.Int32: return true;                      
   case TypeCode.UInt64: return true;                  
   case TypeCode.Int64: return true;          
   case TypeCode.Single: return true;      
   case TypeCode.Double: return true;   
   default: return false;               
   }               
   // Possible conversions from SByte follow.  
   if (typeCodeFrom == TypeCode.SByte)       
   switch (typeCodeTo)                  
   {                       
   case TypeCode.Int16: return true;    
   case TypeCode.Int32: return true;     
   case TypeCode.Int64: return true;            
   case TypeCode.Single: return true;             
   case TypeCode.Double: return true;                
   default: return false;              
   }             
   // Possible conversions from UInt16 follow.    
   if (typeCodeFrom == TypeCode.UInt16)    
   switch (typeCodeTo)             
   {                    
   case TypeCode.UInt32: return true;
   case TypeCode.Int32: return true;    
   case TypeCode.UInt64: return true;            
   case TypeCode.Int64: return true;                  
   case TypeCode.Single: return true;               
   case TypeCode.Double: return true;              
   default: return false;                 
   }              
   // Possible conversions from Int16 follow.          
   if (typeCodeFrom == TypeCode.Int16)          
   switch (typeCodeTo)                 
   {                     
   case TypeCode.Int32: return true; 
   case TypeCode.Int64: return true;          
   case TypeCode.Single: return true;        
   case TypeCode.Double: return true;            
   default: return false;              
   }              
   // Possible conversions from UInt32 follow.   
   if (typeCodeFrom == TypeCode.UInt32)        
   switch (typeCodeTo)                
   {                     
   case TypeCode.UInt64: return true;        
   case TypeCode.Int64: return true;       
   case TypeCode.Single: return true;     
   case TypeCode.Double: return true;   
   default: return false;            
   }              
   // Possible conversions from Int32 follow.        
   if (typeCodeFrom == TypeCode.Int32)            
   switch (typeCodeTo)                
   {                      
   case TypeCode.Int64: return true;   
   case TypeCode.Single: return true; 
   case TypeCode.Double: return true;      
   default: return false;               
   }          
   // Possible conversions from UInt64 follow.      
   if (typeCodeFrom == TypeCode.UInt64)         
   switch (typeCodeTo)                  
   {                     
   case TypeCode.Single: return true;    
   case TypeCode.Double: return true;       
   default: return false;                 
   }              
   // Possible conversions from Int64 follow.      
   if (typeCodeFrom == TypeCode.Int64)        
   switch (typeCodeTo)               
   {                       
   case TypeCode.Single: return true;         
   case TypeCode.Double: return true;        
   default: return false;            
   }             
   // Possible conversions from Single follow.    
   if (typeCodeFrom == TypeCode.Single)   
   switch (typeCodeTo)                
   {                    
   case TypeCode.Double: return true;    
   default: return false;            
   }        
   }       
   return false;
   }

좋은 웹페이지 즐겨찾기