关闭

C#的类型转换(2)之装箱拆箱和Nullable

标签: C#类型转换装箱拆箱和Nullable
236人阅读 评论(0) 收藏 举报
分类:
装箱(把值类型转换成引用类型)与拆箱(把引用类型转换成值类型)
装箱是把值从栈中拿出来放在堆上,再把值对应的索引号放入栈中
拆箱是从栈中申请内存然后把堆中的值放如到申请的栈空间中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //隐式转换
            int i = 1;
            long l = i;
            C1 c1= new C2();//小范围向大范围转换

            //显式转换---大范围向小的范围转换,或者说基类向子类
            double d = 10.05;
            int iFromD = (int)d;

            //无法进行转换,使用处理异常:这个例子只是为了说明基类向子类转换的实例
            C1 c11 = new C1();
            try
            {
                C2 c2 = (C2)c11;
            }
            catch(Exception e) {
                Console.WriteLine(e.Message);
            }

            //整型转换成string类型
            string sFromI =i.ToString();
            //string转换成整数类型:方法一
            int iFromS = Convert.ToInt32("100");
            //方法二
            int iFromS2 = Int32.Parse("101");
            //方法三
            int iFromS3;
            bool succeed = Int32.TryParse("jikexueyuan",out iFromS3);
            Console.WriteLine(iFromS);
            Console.WriteLine(iFromS2);
            Console.WriteLine(iFromS3);

            //装箱(把值类型转换成引用类型)与拆箱(把引用类型转换成值类型)
            int iToBoxing = 100;
            object iBoxed = iToBoxing;
            //拆箱--
            int iUnboxing = (int)iBoxed;
            object nullObject = 5;//为空则出错即5不能为null
            int isNull = (int)nullObject;
            //可为空的int
            int? iNullable = 100;//相当于
            System.Nullable<int> iNullable2=100;
            Console.WriteLine(iNullable.Value);

            //报错
            //int? iNullable3 = null;
            //Console.WriteLine(iNullable3.Value);
            //正确方法为以下
            int? iNullable3 = null;
            Console.WriteLine(iNullable3.HasValue);
            //或者直接用下一句
            Console.WriteLine(iNullable3.GetValueOrDefault());

            //下面是双问号的作用:如果iNullable3为空的话,被复为后面的值。不为空的话
            //显示前面的值
            int iii = iNullable3 ?? 500;
            Console.WriteLine(iii);

            int iii1 = iNullable ?? 500;
            Console.WriteLine(iii1);

            Console.ReadLine();

        }
    }
    class C1 { }
    class C2 : C1 { }
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C#装箱和拆箱(Boxing 和 UnBoxing)

1、什么是装箱和拆箱? 简单来说:       装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型。(网上广为流传)  C#中值类型和引用类型的最终基类都是Object类型(它本身是一个引用...
  • qiaoquan3
  • qiaoquan3
  • 2016-05-17 21:44
  • 2703

浅C#中的装箱和拆箱

1、什么是装箱和拆箱? 简单的来说: 装箱就是值类型转换为引用类型;拆箱就是引用类型转换为值类型 值类型,包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、...
  • gengyudan
  • gengyudan
  • 2013-06-21 09:53
  • 6612

C# struct 装箱拆箱例子

值类型:拆箱、装箱 struct是值类型struct和class的区别 类是引用类型,struct是值类型 在托管堆上创建类的实例,在栈上创建struct实例 类实例的赋值,赋的是引用地址,stru...
  • myinc
  • myinc
  • 2017-01-21 21:39
  • 347

C#--三行代码带你理解神秘的拆箱和装箱

一、在说拆箱和装箱之前的准备知识首先,我们需要知道c#中有两种类型:值类型和引用类型 名称 值类型 引用类型 表示类型 基本类型 类,数组,接口 ,C#特有的委托. 存储内容...
  • qq_32452623
  • qq_32452623
  • 2016-12-29 17:22
  • 2472

装箱和拆箱的基本原理

3.1.4 简述装箱和拆箱原理 40 · 装箱和拆箱的基本概念 · 装箱拆箱对性能的影响 · 如何有效避免装箱拆箱   分析问题 1.装箱和拆箱的基本概念 在第3.1.3节中,笔者已经介...
  • szyzxcv5689
  • szyzxcv5689
  • 2013-04-21 16:31
  • 2672

C# - 再谈C#的装箱和拆箱

上一篇写了一下装箱拆箱的定义和IL分析,这一篇我们看下使用泛型和不使用泛型引发装箱拆箱的情况 1. 使用非泛型集合时引发的装箱和拆箱操作  看下面的一段代码: 1 2 3 ...
  • honey199396
  • honey199396
  • 2016-08-31 11:35
  • 505

深入剖析Java中的装箱和拆箱

原文出处: 海子 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相...
  • zf0512305
  • zf0512305
  • 2016-03-19 14:39
  • 4135

.NET的装箱与拆箱内幕

装箱与拆箱是.NET中非常重要的概念。 装箱是将值类型转换成引用类型,或者是实现了接口的值类型。装箱将数据存储的空间由Thread stack转存到了Managed Heap中。凡是在Managed ...
  • xxdddail
  • xxdddail
  • 2014-07-04 16:49
  • 1578

Java学习笔记之自动装箱与拆箱

更多博文可参考我的个人独立博客:贱贱的梦想 什么是自动装箱与拆箱自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Intege...
  • GongchuangSu
  • GongchuangSu
  • 2016-05-28 22:28
  • 1102

深入剖析Java中的装箱和拆箱

深入剖析Java中的装箱和拆箱   自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的...
  • carolzhang8406
  • carolzhang8406
  • 2015-05-27 14:07
  • 2964
    个人资料
    • 访问:79425次
    • 积分:1605
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:12篇
    • 译文:0篇
    • 评论:25条
    最新评论