CLR 如何知道装箱对象的类型?

2024-02-23

当值类型被装箱时,它被放置在untyped参考对象。 那么是什么原因导致这里出现无效的强制转换异常呢?

long l = 1;
object obj = (object)l;
double d = (double)obj;

不,它没有放置在无类型对象中。对于每种值类型,CLR 中都有一个装箱引用类型。所以你会有某物 like:

public class BoxedInt32 // Not the actual name
{
    private readonly int value;
    public BoxedInt32(int value)
    {
        this.value = value;
    }
}

该装箱类型无法在 C# 中直接访问,但可以在 C++/CLI 中访问。显然它知道原始类型。所以在 C# 中你必须有一个编译时类型object对于变量,但这并不意味着这是对象的实际类型。

See the ECMA CLI 规范 http://www.ecma-international.org/publications/standards/Ecma-335.htm or 通过 C# 进行 CLR https://rads.stackoverflow.com/amzn/click/com/0735621632更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CLR 如何知道装箱对象的类型? 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 绘制大圆路径

    我正在尝试绘制一些基于路径 连接的地图 但无法弄清楚如何绘制 我看到基于一点的指标有很多可能性 伦敦的犯罪热点等 使用 googleVis ggmap 等 但我找不到太多基于两点的指标的示例 城市之间的移民 火车路线等 包中有一个示例geo
  • 找不到接受所提供参数的“+”重载

    所以我试图将我用 Objective C 制作的游戏转换为 Swift 我试图让它工作 但它总是给我一个错误 var actualX Double arc4random Double rangeX Double minX 我也尝试过 var
  • 如何在 Doxygen 注释中包含“<”?

    假设我正在使用 DOxygen Visual studio 兼容注释记录成员函数 如何使用小于 例如 如果我这样做
  • 如何在Azure函数的自定义HTTP路由中指定查询参数?

    我有一个 Azure Function 我想设置自定义 HTTP 端点 按照这个SO的答案question https stackoverflow com questions 52748519 how can my http trigger
  • Android Studio 中未显示菜单栏

    我在 macOS Sierra 上使用 Android Studio 应用程序时遇到问题 似乎该应用程序并未真正打开 因为通常 当应用程序打开时 其在扩展坞中的图标下有一个点 但在我的电脑上没有 真正的问题是 文件 构建 等菜单栏选项没有显
  • 唯一索引的分区列必须是索引键错误的子集

    所以我的项目要求我使用分区将名为 Leases 的表分成两个 分区的一侧是早于 2003 年 1 月 15 日的租约 另一侧是比该日期更新的租约 基本上我之前创建了一个名为 Leases 的表 我想为其创建一个分区 我需要创建一个全新的表来
  • 如何在 jenkinsfile(Groovy 脚本)中发送带有附件的电子邮件?

    我想在詹金斯的构建后操作后发送电子邮件 因此我编写了 jenkinsfile 如下 但我需要一些绝妙的脚本 1 zip 文件附件 2 在附加文件之前 我需要将文件夹转换为zip格式 注意 请不要建议电子邮件插件程序和配置 我更喜欢 Jenk
  • 无需 JavaScript 即可发布链接

    假设我的页面上有一个日历 单击某一天会将这一天标记为完成 但我想使用 POST 而不是 GET 因为 GET 不适合这种东西 改变一些东西 而且我也不想使用 JavaScript 我在这里要做的是构建一个无需 JavaScript 即可工作
  • 这是 Delphi 动态数组行为所期望的吗

    问题是 当动态数组被设置为类成员时 Delphi 如何在内部管理它们 它们是通过引用复制还是传递的 使用德尔福10 3 3 The UpdateArray方法从数组中删除第一个元素 但数组长度仍为 2 这UpdateArrayWithPar
  • 如何获得字典顺序中最小的?

    我正在做leetcode练习 https leetcode com problems remove duplicate letters https leetcode com problems remove duplicate letters
  • 限制限定符和指针算术

    递增或递减限制限定指针是否保留不别名假设 a and b point to disjoint arrays void foo size t n double restrict a double restrict b size t i dou
  • Mockito 间谍方法不起作用

    我在使用mockito spy 方法时遇到麻烦 我最近到达了一个 旧 项目 我的第一个任务是在其中添加mockito 并进行真正的单元测试 该项目有很多概念问题 但这不是重点 我解释一下我的问题 我有课 public class Tutu
  • 您如何在 VIM 中使用 FASD 和 FZF 的外部导航?

    您是否找到了使用 FASD 或 fzf 和 VIM 进行文件导航的舒适工作流程 我在 VIM 中打开最近的文件时遇到问题 因为 FASD 无法捕获它们 我正在寻找一些技巧 FASD 工作流程 将以下行放入您的 zshrc alias v f
  • Cloud Foundry 应用程序正在运行的实例数

    我的应用程序需要获取其运行的实例数 在运行时我的应用程序在程序逻辑中使用此信息 VCAP APPLICATION 环境变量无法提供此信息 直接调用 API 并使用 实例 属性是一种选择 但我不知道如何在我的应用程序中直接调用应用程序 API
  • 在 angular2 中使用 http 访问 Amazon s3

    我的 Amazon s3 存储桶中有一个 json 文件 当我尝试在 Angular2 应用程序中使用 http 调用访问该文件时 出现错误 跨源请求被阻止 同源策略不允许读取 远程资源位于https s3 us east 2 amazon
  • Directory.Exists 对时间敏感吗?

    我的应用程序中有以下代码 if Directory Exists myPath Directory CreateDirectory myPath 如果我在常规单元测试中运行它 有时它会通过 有时则不会 该目录始终存在 我确定了这一点 因此从
  • 如何在Mysql中创建一个id(自动递增)并与其连接一个字符串?仅使用 PHP

    需要创建一个具有自动递增主键的 id 必须使用 php 将字符串与该 id 一起存储 如下所示 我的sql必须显示 ID WFS001 WFS002 WFS003 WFS005 一个选项是有一个自动增量列 执行插入 获取最后一个 idLAS
  • 如何从主线程唤醒休眠线程?

    我有一个捕获程序 除了捕获数据并将其写入文件外 还打印一些统计信息 打印统计信息的函数 static void report void Print statistics 大约每秒调用一次 使用每秒到期的警报 所以该程序就像 void cap
  • 触发锚链接的点击

    我有一个链接集合 其中包含与它们匹配的缩略图 我需要将这些缩略图加载为 div 并为其设置背景图像 我使用的是包含所有缩略图的单个图像 因此我不能仅将图像加载为图像 单击图像应该与单击链接执行相同的操作 但我制作了一个 JSFiddle 来
  • CLR 如何知道装箱对象的类型?

    当值类型被装箱时 它被放置在untyped参考对象 那么是什么原因导致这里出现无效的强制转换异常呢 long l 1 object obj object l double d double obj 不 它没有放置在无类型对象中 对于每种值类