C#将object数据取出来
时间: 2024-09-07 17:04:50 浏览: 48
在C#中,`object`是所有类型的最终基类。当你从一个`object`类型变量中取出数据时,通常需要将其转换(cast)到具体的类型,这个过程称为类型转换或类型强制转换。类型转换有两种主要形式:装箱和取消装箱、显式转换。
1. 装箱和取消装箱:在.NET中,值类型可以自动装箱(boxed)到`object`类型,这是指将值类型的数据包装到`object`类型的实例中。取消装箱(unboxing)则是将`object`类型的实例还原为原来的值类型。
```csharp
int i = 123;
object o = i; // 装箱
int j = (int)o; // 取出数据,取消装箱
```
2. 显式转换:对于引用类型,通常使用显式转换来获取`object`中的数据,这种转换可能是安全的,也可能是不安全的,取决于具体类型。编译器允许安全的显式转换,对于可能引发运行时错误的转换,需要使用`as`操作符或`is`关键字进行检查。
```csharp
string s = "Hello World";
object o = s;
string str = o as string; // 安全转换
```
使用`as`操作符时,如果转换失败,它会返回`null`而不是抛出异常。使用`is`关键字可以检查一个对象是否可以安全地转换成特定类型。
```csharp
if (o is string)
{
string str = (string)o; // 安全转换
}
```
如果类型不匹配,直接的显式转换(强制转换)将会抛出异常:
```csharp
object o = 123;
string str = (string)o; // 这将抛出异常,因为int不能转换为string
```
阅读全文