2009-09-22 37 views
0

我在想如果有一個系統函數會告訴我,如果一個類型表示一個數值(對於一個自定義TypeConverter)。確定檢查每種類型的已知類型是否正常,但我不太喜歡它。是否代表數值C#

 if (destinationType == typeof(int)) 
      return true; 

     if (destinationType == typeof(Int16)) 
      return true; 

     if (destinationType == typeof(Int32)) 
      return true 
     ... 
     if (destinationType == typeof(float)) 
      return true; 
     ... 

謝謝。

+0

這是一個重複的問題,我絕對記得被問及回答,但似乎無法找到它。 – Noldorin 2009-09-22 01:37:46

+0

它被問到很多...這將是一個ncie功能,不存在 – 2009-09-22 01:38:46

+0

http://stackoverflow.com/questions/437882/c-equivalent-of-nan-or-isnumeric – xcud 2009-09-22 01:48:55

回答

1

如果你看看Linq ExpressionNode(內部類)IsNumeric方法,它基本上是針對每種類型進行測試。

if (!IsFloat(type)) 
{ 
    return IsInteger(type); 
} 
return true; 

而且,這兩個功能正在測試針對基本類型,像

internal static bool IsInteger(StorageType type) 
{ 
    if ((((type != StorageType.Int16) && (type != StorageType.Int32)) && ((type != StorageType.Int64) && (type != StorageType.UInt16))) && (((type != StorageType.UInt32) && (type != StorageType.UInt64)) && (type != StorageType.SByte))) 
    { 
     return (type == StorageType.Byte); 
    } 
    return true; 
} 

StorageType是一個LINQ特定的類,但你的想法:只是測試對每一種類型。

這是知道該值是否是數值類型的最簡單方法。

+0

我認爲這將歸結爲個人測試類型的最後:( – 2009-09-22 02:03:23