举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > c#装箱和拆箱的概念 C# 装箱和拆箱

c#装箱和拆箱的概念 C# 装箱和拆箱

2023-02-25 12:18 C#教程

c#装箱和拆箱的概念 C# 装箱和拆箱

c#装箱和拆箱的概念

C#装箱和拆箱是C#中的一个重要概念,它是指将值类型转换为引用类型,或者将引用类型转换为值类型。装箱是将一个值类型的变量转换成一个对象,而拆箱则是将一个对象转换成一个值类型的变量。

装箱是在运行时执行的,它会创建一个新的对象,并将原始变量的内容复制到新对象中。这样就可以使用引用来引用原始变量。装箱有助于在不同数据结构之间传递数据,例如从数字列表传递数字到字典中。

而拆箱则是相反的过程:它将引用对象中保存的内容复制回原始变量中。这样就可以使用原始变量来引用该对象。此外,如果要在不向上转型的情况下使用特定方法或字段(例如int.Parse()方法),也需要使用此过程。

// 装箱 
int i = 123; 
object o = i; 
 
// 拆箱 
int j = (int)o; 

C# 装箱和拆箱

C# 装箱和拆箱

对象类型

object System.Object 是所有类型的最终基类。

任何类型都可以upcast到对象。

以下代码创建一个类Stack以提供First-In-Last_Out数据结构。

public class Stack {
    int position; 
    object[] data = new object[10];
    public void Push (object obj) { data[position++] = obj; }
    public object Pop() { return data[--position]; } 

} 

因为Stack使用对象类型,我们可以推送和弹出任何类型到和从堆栈。

Stack stack = new Stack(); 
stack.Push ("CSS"); 
string s = (string) stack.Pop(); // Downcast, so explicit cast is needed 
Console.WriteLine (s);

装箱和拆箱

在值类型和对象之间进行转换时,CLR必须执行装箱和取消装箱的过程。

装箱

装箱是将值类型实例转换为引用类型实例。

引用类型可以是对象类或接口。

int x = 1; 
object obj = x; // Box the int 

拆箱

拆装箱会将操作转换为原始值类型,从而反转操作:

int y = (int)obj; // Unbox the int 

拆箱需要显式强制转换。

例如,以下引发异常,因为long不完全匹配int:

object obj = 1; // 1 is inferred to be of type int 
long x = (long) obj; // InvalidCastException 

以下代码执行取消装箱和强制转换:

object obj = 9; 
long x = (int) obj; 


阅读全文
以上是编程学为你收集整理的c#装箱和拆箱的概念 C# 装箱和拆箱全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • c#访问修饰符的权限 C# 访问修饰符

    c#访问修饰符的权限 C# 访问修饰符

    2023-02-23 C#教程

    C#访问修饰符类型或类型成员可以通过使用访问修饰符来限制其对其他类型的可访问性。例如,我们可以设置一个方法的访问级别,使...

  • c#枚举类型enum用法 C# 枚举

    c#枚举类型enum用法 C# 枚举

    2023-02-28 C#教程

    C#枚举枚举是一种特殊的值类型,是指定的数字常量组。例子例如:public enum Direction { Left, Right, Top, Bottom } 我们可以...

  • C# 嵌套类型

    C# 嵌套类型

    2023-02-23 C#教程

    C#嵌套类型嵌套类型在另一个类型的范围内声明。例如:public class Main { public class Nested { } // Nested class public enu...

  • c#条件运算符 C# 条件运算符

    c#条件运算符 C# 条件运算符

    2023-02-25 C#教程

    C#条件运算符和||运算符测试与和或条件。!运算符表示不。以下代码使用and,not和or运算符创建布尔表达式。!cloudy(WeekDay || ...

  • c#switch case语句 C# if switch语句

    c#switch case语句 C# if switch语句

    2023-02-24 C#教程

    C# if switchif语句语法对于使用过程语言进行任何编程的任何人都应该是非常直观的:if (condition)statement(s) elsestatement(s...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部