装箱/拆箱和可为空?

2024-02-19

我知道装箱和拆箱是关于强制转换(真实类型到对象...对象到真实类型)。但我不明白 MSDN 对 Nullable 的说法。这是我不明白的文字:

当可空类型被装箱时,公共语言运行时会自动装箱 Nullable 对象的基础值,而不是 Nullable 对象本身。也就是说,如果 HasValue 属性为 true,则 Value 属性的内容将被装箱。当可为 null 类型的基础值拆箱时,公共语言运行时会创建一个新的 Nullable 结构,并初始化为基础值。Source http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

当您将对象更改为实数类型时,可为空的实数类型变量将是对象的类型?我不明白这一点?


它的意思是,如果你这样做:

int? x = 5;
object y = x; // Boxing

你最终会得到一个盒装的int,不是盒装的Nullable<int>。同样,如果你这样做:

int? x = null; // Same as new Nullable<int>() - HasValue = false;
object y = x; // Boxing

然后 y 最终成为空引用。

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

装箱/拆箱和可为空? 的相关文章

  • WinRT 中是否有“IsInDesignMode”属性?

    我正在尝试从 Phone 7 移植我的应用程序 但找不到检测控件何时处于设计模式的方法 知道了 Windows ApplicationModel DesignMode DesignModeEnabled 我正在使用这个 if Microso
  • C++/CLI 从具有抽象方法的本机 C++ 类继承并将其公开给 C#

    我一直在谷歌上转圈子 试图找到一个成熟的例子 但没有成功 我有一个 C API 它提供了许多包含纯虚方法的类 供开发人员从中进行扩展 我试图做的是通过 C CLI 向 C 提供此接口 我已经设法将 API 编译到 C CLI 库中 但由于我
  • 如何更改 .NET 中的 Windows 服务启动类型(安装后)?

    我有一个安装服务的程序 我希望能够稍后为用户提供将启动类型更改为 自动 的选项 操作系统是 XP 如果有什么区别的话 Windows API 我怎样才能在 NET 中做到这一点 如果可能的话用C 我写了一个博客文章 http peterke
  • 使用 .NET 加密和解密数字

    NET 使用 C 有哪些可用的加密技术 我有一个数值 我想将其加密为字符串表示形式 哪一款支持解密 加密 由 NET 框架 BCL 提供 而不是 C 语言提供 通常对字节进行加密 但那很好 数字很 容易表示为字节 并且输出字节可以通过以下方
  • 如何在 C# 中绘制蜡烛图 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何在 C 中绘制蜡烛图 有人有任何界面漂亮的例子吗 我用过MSChart http code msdn
  • 什么是组件对象模型 (COM)?它依赖于语言吗?

    我是 COM 的新手 我不知道它是什么 也不知道它为何存在 这是一种类似于 OOP 的编程方法吗 编程语言必须支持它吗 带有一些特殊的关键字什么的 当我问我的教授时 他说 COM 是一种执行 OOP 的二进制稳定方式 我们需要了解二进制布局
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求
  • 检测控件是否已释放

    在我的应用程序中 我有一个使用线程池执行异步操作的用户控件 线程池方法如下 private void AsyncFunction object state do the calculation refresh the grid data o
  • Google Drive api v3 响应为空

    我想尝试上传文件谷歌驱动器 我的代码在这里 public static File UploadFile DriveService service string fileName string filePath string descript
  • 从字符串中获取大写字母的索引[重复]

    这个问题在这里已经有答案了 可能的重复 指定 CamelCase 字符串的算法 https stackoverflow com questions 484085 an algorithm to spacify camelcased stri
  • 为什么我不能执行 foreach (var Item in DataTable.Rows)?

    我无法执行以下操作是否有原因 foreach var Item in DataTable Rows 而不是必须做 foreach DataRow Item in DataTable Rows 我本以为这是可能的 就像其他数据类型一样 例如
  • 反序列化 XML 文件而不将其全部加载到内存中 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 假设您的应用程序使用 XmlSerializer 序列化对象 当应用程序的另一部分 例如外部服务或另一个组件 处理该 XML 文件时 会返回一个
  • 更新后 LINQ to SQL 返回旧数据

    我有一个使用 LINQ to SQL 连接到数据库的应用程序 我在获取 LINQ to SQL 返回正确的新更新数据时遇到问题 发生的情况是 我更改了 UI 上的字段 LINQ to SQL 生成更新语句 并将新数据存储在数据库中 但是 此
  • .NET XmlWriter 中正确的名称空间管理

    我在工作中广泛使用 NET XML 技术 我非常喜欢的事情之一是 XSLT 引擎 更准确地说是它的可扩展性 然而 有一个小部件一直是令人烦恼的根源 没有什么重大的事情或者我们不能忍受的事情 但是它阻止了我们生成我们想要生成的漂亮的 XML
  • 使用 LINQ 分割字符串

    我想按我的结果和字符串行中的匹配数进行排序 所以这是代码 ThenByDescending p gt p Title ToLower Split Count w gt words Any w Contains 但它给我带来错误并说 LINQ
  • 在.net中创建一个圆形头像图像

    我想创建一个默认头像图像 它是一个带有缩写的圆圈 我想在服务器端以 png 格式执行此操作 使用 net 图形库可以实现这一点吗 我最终这样做了 感谢您为我指明了正确的方向 TaW public ActionResult Avatar us
  • 与 PowerShell CmdLets 互操作

    我一直在编写一些利用 App V 的 PowerShell Cmdlet 的实用程序 有趣的是 微软似乎只记录了 cmdlet 而不记录 Powershell 模块背后使用的 net 程序集 现在 我熟悉了 P Invoke 和 COM I
  • 用户“NT AUTHORITY\ANONYMOUS LOGON”的 Web 应用程序登录失败

    我看到很多人都遇到这个错误 但他们的情况似乎都与我的有点不同 我有一个 ASP NET 4 0 Web 应用程序 它在 Windows 2003 Server 上的 IIS 6 0 中运行 当我远程到 Web 服务器框并登录并访问该站点时本
  • TransactionScope 在某些机器上自动升级到 MSDTC?

    在我们的项目中 我们使用 TransactionScope 来确保我们的数据访问层在事务中执行其操作 我们的目标是not要求在我们的最终用户的计算机上启用 MSDTC 服务 问题是 在我们一半的开发人员机器上 我们可以在禁用 MSDTC 的

随机推荐

  • 如何从管道 (jenkinsfile) 中使用 Jenkins Copy Artifacts 插件?

    我试图找到一个在 Jenkins 管道 工作流程 中使用 Jenkins Copy Artifacts 插件的示例 谁能指出使用它的示例 Groovy 代码吗 通过声明式 Jenkinsfile 您可以使用以下管道 pipeline age
  • 超时已过。操作完成前超时时间已过或服务器未响应

    运行 ssis 包时 我在 ADO net 源中调用 sp 但出现此错误 超时已过 操作完成之前超时时间已过 或者服务器没有响应 我已将命令超时设置为 0 无限时间 但仍然收到错误 sp 在 sql server 中工作正常 大约需要 31
  • Android Studio 签名的 APK 未安装

    我在 Android Studio 中 在 构建 gt 生成签名的 APK 下签署 APK 并使用向导 一切似乎都正常 并生成了一个 apk 文件 当我将此文件复制到我的设备 Nexus 7 或 Moto X 时 它不会安装 我收到 安装失
  • 单击电子邮件链接时出现不受支持的操作错误

    我已在 xml 中提供了指向 TextView 的电子邮件链接 但当我单击 TextView 时 它显示不支持的操作错误 如何将活动链接放在文本视图中的电子邮件上 这是我的 string xml 文件的代码
  • 如何禁用 UIScrollView 的水平滚动?

    我有一个UIView就像iPhone的跳板一样 我已经使用创建它UIScrollView and UIButtons 我想禁用所述滚动视图上的水平滚动 我只想要垂直滚动 我该如何实现这个目标 你必须设置contentSize的财产UIScr
  • Akka/Java getContext().become 带参数?

    在 Akka Scala 中 可以将参数传递给自定义接收函数 因此可以通过 params 传递整个 actor 状态 而无需使用可变变量 context become myCustomReceive param1 param2 但在 Jav
  • 为什么 strcmp 比我的函数快得多?

    我写了一个函数 Str Compare 这基本上是一个strcmp以另一种方式重写 在比较两个函数时 在循环中重复 500 000 000 次 strcmp执行速度太快 大约x750快几倍 这段代码是在 C 库中编译的 Os参数有效 int
  • 为什么输入错误值后输出是三行消息而不是一行?

    输入的代码是 import java io IOException public class A public void fn throws IOException char ch do System out println Press C
  • 由于 MIME 类型不匹配,IE9 脚本响应被阻止

    我使用以下代码片段将 google fusion 表中的数据加载为 json var fileref document createElement script fileref setAttribute type text javascri
  • Visual Studio 2010 中的文本覆盖

    这里真的很愚蠢的问题 在 Visual Studio 2010 中 文本光标已从闪烁的线更改为字符周围闪烁的灰色框 当我输入时会覆盖前面的文本 我不知道如何去掉这个 这就像当您在 Microsoft Word 中按插入键并打开覆盖模式时会发
  • 证书验证失败:证书已过期 (_ssl.c:1108)

    当尝试运行我的 Discord 机器人时 我收到此错误 raise ClientConnectorCertificateError aiohttp client exceptions ClientConnectorCertificateEr
  • 如何在 Windows 启动时启动 python 文件?

    我有一个 python 文件并且正在运行该文件 如果 Windows 关闭并再次启动 我如何在每次 Windows 启动时运行该文件 根据脚本正在执行的操作 您可以 将其打包成服务 然后安装该服务 将其添加到 Windows 注册表 HKC
  • 我想在启动画面中播放lottie动画React Native

    在 React Native 中 在应用程序启动之前 我们可以看到白屏 我想在单击应用程序图标时立即加载启动屏幕 我想避免白色背景 Using 反应本机启动画面 https github com crazycodeboy react nat
  • 使用远程 couchbase 和 AWS ec2 时超时

    出于开发目的 我想将本地计算机连接到安装在远程 ec2 上的 couchbase 我成功建立连接 但当我尝试访问数据时出现超时 我搜索了问题并发现here https stackoverflow com questions 12117746
  • Java 的 varargs 性能

    编码 我来检查 Java 的 vararg 性能 我编写以下测试代码 public class T public static void main String args int n 100000000 String s1 new Stri
  • PHP 全局常量是一种良好的现代开发实践吗?

    我正在开发一个具有相当大的 PHP 代码库的新项目 该应用程序使用了相当多的 PHP 常量 define FOO bar 特别是对于数据库连接参数之类的事情 这些常量都定义在一个配置文件中 该文件是require once 基本上应用程序中
  • 连接两个时间序列的最有效方法

    想象一下我有一张这样的表 CREATE TABLE time series snapshot date DATE sales INTEGER PRIMARY KEY snapshot date 具有这样的值 INSERT INTO time
  • 运行查询时“不支持使用USE语句在数据库之间切换”

    尝试使用以下命令选择数据库时出现以下错误php s标准mssql select db功能 USE statement is not supported to switch between databases Use a new connec
  • Linux内核设备驱动程序以DMA方式进入内核空间

    LDD3 p 453 演示dma map single使用作为参数传入的缓冲区 bus addr dma map single dev gt pci dev gt dev buffer count dev gt dma dir Q1 这个缓
  • 装箱/拆箱和可为空?

    我知道装箱和拆箱是关于强制转换 真实类型到对象 对象到真实类型 但我不明白 MSDN 对 Nullable 的说法 这是我不明白的文字 当可空类型被装箱时 公共语言运行时会自动装箱 Nullable 对象的基础值 而不是 Nullable