为什么向字符串添加 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 是合法的? 的相关文章

  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica
  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 类中是否可以有虚拟类声明?

    我正在为个人项目中框架的各个组件设置一个接口 我突然想到了一些我认为可能对接口有用的东西 我的问题是这是否可能 class a public virtual class test 0 class b public a public clas
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • 名称查找、实例化点 (POI) 和基本类型

    以下代码针对 X 进行编译 但不适用于 double struct X void foo double void foo X namespace NN struct A void foo A foo double error foo not
  • 为什么 std::function 不是有效的模板参数,而函数指针却是?

    我已经定义了名为的类模板CallBackAtInit其唯一目的是在初始化时调用函数 构造函数 该函数在模板参数中指定 问题是模板不接受std function作为参数 但它们接受函数指针 为什么 这是我的代码 include
  • 如何设置消息队列的所有者?

    System Messaging MessageQueue 类不提供设置队列所有权的方法 如何以编程方式设置 MSMQ 消息队列的所有者 简短的答案是 p invoke 对 windows api 函数的调用MQSetQueueSecuri
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 初始化列表在 VC10 中不起作用

    我在 VC 2010 中编写了这个程序 class class1 public class1 initializer list
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector

随机推荐

  • 在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