引起这种情况的情况很复杂,但我已经将我的问题精简到了本质。我有一个byte
放入double
变量的值。然后将其存储在object
变量中。当我可以访问这个对象变量时,我想将它转换回一个字节。这是我的问题的简短代码示例:
byte originalValue = 23;
double valueAsDouble = originalValue;
// These work without issue
byte valueByte = (byte)valueAsDouble;
int valueInt = (int)valueAsDouble;
object valueObject = valueAsDouble;
// Both of these lines throw and InvalidCastException
int valueReconvertToInt = (int)valueObject;
byte valueReconvertToByte = (byte)valueObject;
我猜我的问题有两个部分。为什么不允许这样做?除非我弄错了,否则object
它只是一个包装器,double
所以我不应该把它投射到同样的地方吗?
我的第二个问题是,当我想将这样的值转换为 a byte
or int
(或我通常可以从 a 转换的其他数据类型double
)时,是否可以使用一些通用的工作,但我想到了一对。最好使用Convert.ChangeType(),在object
将 adouble
转换为所需类型之前将其转换为 a ,或者我不知道的其他解决方案?