无法从对象转换为System.ValueType

时间:2017-07-11 22:20:30

标签: c# c#-4.0

我正在尝试从here实施IsNumeric方法。但是传递像Utility.IsNumeric(arrayCsvValues[i])这样的数组值会给我错误

  

错误CS1503参数1:无法从'对象'转换到' System.ValueType' DataSetConsoleApplication \ DataSetConsoleApplication \ Program.cs

这是方法。

   public static bool IsNumeric(ValueType value)
   {
      return (value is Byte ||
              value is Int16 ||
              value is Int32 ||
              value is Int64 ||
              value is SByte ||
              value is UInt16 ||
              value is UInt32 ||
              value is UInt64 ||
              value is BigInteger ||
              value is Decimal ||
              value is Double ||
              value is Single);
   }

我正在使用.NET Framework 4.5.2控制台应用程序。请帮忙。

PS编辑:

抱歉,我从MS Docs

中读到了这个内容
  

....或允许方法处理多种不同的值类型

和(遗憾地)认为该方法将接受String sint S中任何类型的变量。关于参考类型和价值类型的答案为我清除了一切。 Downvotes当之无愧。

1 个答案:

答案 0 :(得分:0)

该代码仅在您传递值类型时才有效。您尝试传递的object是引用类型,因此编译器禁止您将其用作参数:

  

MSDN: System.ValueType

     

[...]可以用作方法调用中的参数,以限制值类型而不是所有对象的可能参数

因此,您只需将参数类型从ValueType更改为object,这将使此代码适用于任何参数类型,并仍然执行所需的行为。

但是从变量和代码来看,你似乎正在尝试完全做其他事情。您在寻找decimal.TryParse()吗?