没有很华丽的语言,直接拿代码说事情把。

这段代码,会报错吗?  结论:当然不会

这段代码会报错了。原因是为啥? 这里面的水比较深。也要提醒各位写代码的适合要引起注意。异常:System.InvalidCastException: Specified cast is not valid.

先来分析下为毛会报错。  我们知道,装箱操作,是可以把任意类型进行装箱操作的,但是我们是不是可以拆箱成我们需要的类型呢。

var test=(long)obj; 编译器知道obj是object类型的对象。拆箱的时候,编译器生成一个拆箱的指令,假设这是一个拆箱的为int类型,然后将int

类型转换为long类型的自定义指令序列。假设这是一个双重的相同的盒子,但是不同说明等等,对于所有内置整数的转换。这个代码将会非常大

这个将是非常慢的。所以说,编译器在进行拆箱的时候,只能取消选中确切的类型。...

要解决这个问题:采用Convert.ToInt64既可以解决。 这个convert.to方法为我们提供了快速精确或

缓慢松懈的选择。

关于这个问题解决办法也有了,但是问题的本质还是没有理解到位,请大牛们指点。

Specified cast is not valid(C#) 引发的思考(装箱,拆箱本质)的更多相关文章

  1. 由C# dynamic是否装箱引发的思考

    前言 前几天在技术群里看到有同学在讨论关于dynamic是否会存在装箱拆箱的问题,我当时第一想法是"会".至于为啥会有很多人有这种疑问,主要是因为觉得dynamic可能是因为有点特 ...

  2. WPF DelegateCommand 出现Specified cast is not valid

    使用 DelegateCommand 出现 Specified cast is not valid 最近写快捷键需要 DelegateCommand ,于是用了 DelegateCommand< ...

  3. Oracle.EntityFrameworkCore使用时报错:Specified cast is not valid

    我用的是:Oracle.EntityframeworkCore 2.19.30 如果看到报错:System.InvalidCastException:“Specified cast is not va ...

  4. Spring之LoadTimeWeaver——一个需求引发的思考---转

    原文地址:http://www.myexception.cn/software-architecture-design/602651.html Spring之LoadTimeWeaver——一个需求引 ...

  5. 由SecureCRT引发的思考和学习

    由SecureCRT引发的思考和学习 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652500597&idx=1& ...

  6. 解决一道leetcode算法题的曲折过程及引发的思考

    写在前面 本题实际解题过程是 从 40秒 --> 24秒 -->1.5秒 --> 715ms --> 320ms --> 48ms --> 36ms --> ...

  7. 【思考】由安装zabbix至排障php一系列引发的思考

    [思考]由安装zabbix至排障php一系列引发的思考 linux的知识点林立众多,很有可能你在排查一个故障的时候就得用到另一门技术的知识: 由于linux本身的应用依赖的库和其它环境环环相扣,但又没 ...

  8. 由<a href = "#" > 引发的思考

    原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" >  的方式 绑定clic ...

  9. 曲演杂坛--一条DELETE引发的思考

    原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID ,) PRIMARY KEY, D ...

随机推荐

  1. Chrome Performance 页面性能分析指南

    1.背景 性能优化是前端开发一个非常重要的组成部分,如何更好地进行网络传输,如何优化浏览器渲染过程,来定位项目中存在的问题.Chrome DevTools给我们提供了2种常用方式 Audits和Per ...

  2. ORACLE数据库误操作DELETE并且提交数据库之后如何恢复被删除的数据

    一:根据时间来恢复: 1.查询数据库当前时间() select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 2.查询删除数据时间点之前的数据 ...

  3. java中的线程是如何工作的。

    来自对此文章的编辑. https://mp.weixin.qq.com/s?biz=MzA5NDg3MjAwMQ==&mid=2457103451&idx=1&sn=ba302 ...

  4. ApacheCN Vue 译文集 20211115 更新

    使用 GraphQL 构建 VueJS 应用 零.前言 一.数据绑定.事件和计算属性 二.组件.混合器和功能组件 三.设置我们的聊天应用--AWS Amplify 环境和 GraphQL 四.创建自定 ...

  5. 「SHOI2006」有色图

    首先发现这题虽然是边的置换,但是是由点的置换所造成的,并且发现点置换对应的所有边置换和置换操作构成置换群. 由于颜色可以全选,那么根据 Polya 定理,答案为: \[|X / G| = \frac{ ...

  6. jdk、jre、javase、javaee、javame的区别

    Jdk定义 JAVA的开发工具包,包含jre,可以进行编译和运行Java程序. Jre定义 JAVA的运行环境,如果不需要进行编译程序,则可只安装jre. Javase定义 标准版Java SE(Ja ...

  7. js演示面向对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. linux 批量替换文件内容及查找某目录下所有包含某字符串的文件

    转载请注明来源:https://www.cnblogs.com/hookjc/ 1. sed C代码   grep -rl matchstring somedir/ | xargs sed -i 's ...

  9. imagenamed和imageWithContentOfFile的区别

    @implementation ViewController /** 图片的两种加载方式: 1> imageNamed: a. 就算指向它的指针被销毁,该资源也不会被从内存中干掉 b. 放到As ...

  10. 已完成的python项目-环境离线部署

    python环境离线部署 当前生产环境中,有很多基于python开发的工具需要使用. 由于python工具往往涉及到很多依赖,在线状态下,可以通过pip requirements来管理安装. 但有时候 ...