我正在尝试从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 s
或int S
中任何类型的变量。关于参考类型和价值类型的答案为我清除了一切。 Downvotes当之无愧。
答案 0 :(得分:0)
该代码仅在您传递值类型时才有效。您尝试传递的object
是引用类型,因此编译器禁止您将其用作参数:
[...]可以用作方法调用中的参数,以限制值类型而不是所有对象的可能参数
因此,您只需将参数类型从ValueType
更改为object
,这将使此代码适用于任何参数类型,并仍然执行所需的行为。
但是从变量和代码来看,你似乎正在尝试完全做其他事情。您在寻找decimal.TryParse()
吗?