c#object和decimal转换
时间: 2024-09-26 12:10:57 浏览: 74
在C#中,`object` 类型可以用于存储任何类型的值,包括 `decimal` 类型。当你有一个 `object` 值并且你知道它实际上是 `decimal` 类型时,你可以安全地将其转换回来。以下是示例:
```csharp
// 假设我们有一个 object 变量,我们知道它的值是 decimal
object objDecimal = 123.45M;
// 使用 explicit 或者 implicit 转换,这里使用 explicit 以明确显示转换意图
decimal decValue = (decimal)objDecimal; // 显式转换
// 注意:如果 objDecimal 不是 decimal 类型(如 int),将会引发异常
// 如果你是不确定原始值类型,推荐先尝试 cast 到 decimal 并捕获异常
try
{
decimal decValue = (decimal)objDecimal;
}
catch (InvalidCastException)
{
Console.WriteLine("Invalid conversion from object to decimal.");
}
```
关于隐式转换,如果源类型可以直接转换为目标类型而不会丢失精度,那么C#编译器会自动进行这种转换,无需显式声明。例如,从 `int` 到 `double` 的转换通常是隐式的:
```csharp
int integer = 123;
double doubleValue = integer; // 这里是隐式转换,因为 double 可以精确表示 int 的值
```
阅读全文