当前位置:编程学习 > C#/ASP.NET >>

类的装箱拆箱-报错

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace P158
{
    class Test
    {
        public static double ADD(object ox, object oy)
        {
            double x = (double)ox;
            double y = (double)oy;
            return x + y;
        }
        [STAThread]
        static void Main(string[] args)
        {
            double r;
            r = ADD(1, 2);
            Console.WriteLine("ADD(1, 2):" + r);
            r = ADD(1.1, 2.2);
            Console.WriteLine("ADD(1.1, 2.2):" + r);
            r = ADD("1", "2");
            Console.WriteLine("ADD('1',' 2'):" + r);
            r = ADD("1", 2.2);
            Console.WriteLine("ADD('1', 2.2):" + r);
            Console.Read();
        }
    }
}
类的装箱拆箱-报错,怎么解释? --------------------编程问答-------------------- 你懂什么叫装箱拆箱吗?
你懂什么叫类型转换吗?
回去看看书,起码看过前三章再来发这种搞笑帖好吗? --------------------编程问答-------------------- 你这是类型转换 --------------------编程问答-------------------- LZ被叼了 --------------------编程问答-------------------- 传参的时候确实发生了装箱。 --------------------编程问答-------------------- 为了讲值类型转换成一个引用类型,需要一个装箱的机制。
这个过程做了什么列
1.在托管堆分配好了一段内存,内存量=值类型各个元素的量+2个而外成员(内型对象指针和同步块索引)
2.值类型的字段复制到分配的内存块。
3。返回对象地址。
所以装箱的效率的影响远远大于拆箱。 --------------------编程问答-------------------- 传参的时候发生了装箱,计算的时候也有拆箱 --------------------编程问答-------------------- 本质上讲装箱和拆箱就是值类型到引用类型的相互装换 --------------------编程问答-------------------- 参考 --------------------编程问答-------------------- 除 --------------------编程问答--------------------

r = ADD(1.1, 2.2);//确实发生了装箱和拆箱
r = ADD(1, 2);    //这个需要处理,装箱的是整型,拆箱也必须是整型,然后可再将int强制转换为double
r = ADD("1", "2");//string是引用类型,不存在拆箱与装箱直说
r = ADD("1", 2.2);//string是引用类型,不存在拆箱与装箱直说

//拆箱是针对值类型和引用类型之间来说的
int myInt=2;
object obj=myInt;
int yourInt=(int)obj;

//如果转换为double
int myInt=2;
object obj=myInt;
double result==(int)obj;//拆箱之后再进行强制转换
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,