为什么向字符串添加 null 是合法的?

2024-04-16

MSDN 文章关于字符串基础知识 http://msdn.microsoft.com/en-us/library/ms228362.aspx显示这个:

string str = "hello";
string nullStr = null;
string emptyStr = "";

string tempStr = str + nullStr; // tempStr = "hello"
bool b = (emptyStr == nullStr);// b = false;
string newStr = emptyStr + nullStr; // creates a new empty string
int len = nullStr.Length; // throws NullReferenceException

为什么与 null 连接不会引发空引用异常?是为了让程序员的生活更轻松,这样他们就不必在连接之前检查 null 吗?


From MSDN http://msdn.microsoft.com/en-us/library/ms228504.aspx:

在字符串连接操作中, C# 编译器处理空字符串 与空字符串相同,但它 不转换的值 原始空字符串。

更多信息请参阅+ 二元运算符 http://msdn.microsoft.com/en-us/library/aa691375(VS.71).aspx:

二元+运算符执行字符串 当一个或两个都连接时 操作数是字符串类型。

如果 字符串连接的操作数是 null,替换为空字符串。 否则,任何非字符串参数都是 转换为其字符串表示形式 通过调用虚拟 ToString 从类型对象继承的方法。

如果 ToString 返回 null,一个空字符串 被替换。

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

为什么向字符串添加 null 是合法的? 的相关文章

随机推荐

  • 在Windows中启动python时导入模块[重复]

    这个问题在这里已经有答案了 我在 Windows 上使用 python 我正在尝试找到一种在启动 python 时导入一些默认模块的方法 这意味着 当启动python时 一些模块应该已经导入 就像builtins 有什么办法吗 Thanks
  • 如何在QML中设置弹出菜单位置

    我想修复 QML 中弹出菜单的位置 当我单击设置按钮时 我希望弹出菜单将显示在固定位置 我用了一天的时间就做到了 但是做不到 我怎样才能在 QML 中做到这一点 另外 我想更改菜单项的大小 宽度和高度 希望您的帮助 这取决于QtQuick
  • MySQL - 获取前 3 个逗号分隔值

    我有一个查询返回一个带有一组逗号分隔值的字段 我想将这些值中的前三个值放入查询结果中的单独列中 我可以使用第一个SUBSTRING INDEX但我怎样才能得到另外两个呢 SELECT aaaaa bbbbb ccccc SUBSTRING
  • 在对其输出进行 SHA-1 处理后,可预测的随机数生成器如何(如果有的话)变得更加安全?

    本文 http www quadibloc com crypto co4814 htm指出 尽管 Mersenne Twister 是一个非常好的伪随机数生成器 但由于非常简单的原因 它本身并不具有加密安全性 可以从生成器在任何给定时间所具
  • Rspec 捆绑包在 TextMate 和 rvm 中损坏

    自从我开始使用rvm以来 我经历了一段困难时期 我已经完成了所有 rvm textmate 设置并拥有最新的捆绑包 但是我仍然无法从 textmate 运行 Rspec 测试 我有最新的捆绑包github com rspec rspec t
  • 错误:为参数指定的存储类

    我写了一段C代码 当我在 Linux 上编译它时 它在头文件中显示 以下错误 storage class specified for parameter i32 i8等等 typedef int i32 typedef char i8 您很
  • 正则表达式在 Javascript 中获取括号之间的字符串

    我正在尝试编写一个正则表达式 它返回括号之间的字符串 例如 我想获取位于字符串 和 之间的字符串 I expect five hundred dollars 500 会回来 500 Found 正则表达式在Javascript中获取两个字符
  • C++11 / 生成的构造函数

    我一直在从事由其他人 已离开公司 发起的 C 项目 他写了一段代码 看起来运行得很好 但我无法理解 下面是代码的简化版本 有两类 class Algo t protected Matrix t m Matrix public Algo t
  • 如何在 javascript 或 jquery 中将值与逗号分隔值进行比较

    我想将值与 javascript 或 jquery 中的逗号分隔值进行比较 为此 我做了以下代码 还剩下什么 var str reg val i got str 1 2 3 我需要将它与值进行比较 所以我该怎么做 if str 1 WBE
  • 有电影放映时间 api 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ‘sf’(R 包)命名空间加载失败,无法加载共享对象

    我正在尝试在 Centos 机器上安装 R sf 在 gdal 的扩展问题 现在通过从源代码构建修复 之后 我现在得到 Error package or namespace load failed for sf in dyn load fi
  • 如何模拟.net应用程序内存不足?

    好吧 我必须调试内存分配问题 随着时间的推移 应用程序会耗尽内存 我需要为 net 窗口应用程序模拟低内存系统 作为更快地重现内存不足问题的方法 PS 我的初步调查表明 内存泄漏是在应用程序分配非托管资源 托管 DX 时发生的 编写另一个程
  • 使用 EF PowerTools 逆向工程代码优先更改生成的上下文文件的名称

    我一直在尝试弄清楚如何制作 EF Power Tools Reverse Engineer Code First对生成的上下文文件使用不同的名称 比现在使用的要好 Example 我有一个名为我的 Awesome Dev Database
  • Web 服务器找不到请求的资源

    我在 VS 2008 SP1 上有一个 NET 3 5 Web 应用程序 在 Vista Ultimate 32 SP1 上运行 我在默认网站下创建了一个应用程序 所以应用程序的网址是 http localhost mysite http
  • Openlayers 3:以编程方式选择功能

    我正在尝试将我的系统从 Openlayers 2 升级到 Openlayers 3 但我遇到了一个我似乎无法解决的特定问题 我的应用程序有一个网格和一张地图 当用户单击网格时 我想选择地图上的相关点 在 Openlayers 2 中我使用了
  • 在 Ruby On Rails 上学习 BDD 的途径是什么?

    我想在 Ruby On Rails 上启动 BDD 我应该学习什么 我对 BDD RSpec 或 Cucumber 一无所知 最好的学习方式是什么 教程 涵盖 我应该测试什么行为 之类的内容 ETC thanks RSpec 特定 我保留这
  • 有没有办法在 Chrome 和/或 IE 中使用 JS 选择多个文本区域?

    Firefox 3 可以使用 JS 选择多个文本区域 有没有办法在 Chrome 和 IE 中做到这一点 我真的试图找到一种方法来选择多个 Chrome 和 IE9 中网页中的文本区域 信息位于 http help dottoro com
  • TemplateResolver.set Order user 在 thymeleaf 中的作用是什么?

    我使用 Thymeleaf 作为我的电子邮件模板 并且通过谷歌搜索并能够使用以下配置成功运行代码 Configuration public class TemplateEngineConfig Autowired private MailC
  • 不使用“.Copy”+“.Paste”粘贴格式

    例如 rngTo Value rngFrom Value2 Works rngTo NumberFormat rngFrom NumberFormat Works rngTo Cells Interior ColorIndex rngFro
  • 为什么向字符串添加 null 是合法的?

    MSDN 文章关于字符串基础知识 http msdn microsoft com en us library ms228362 aspx显示这个 string str hello string nullStr null string emp