C#实用小知识:string和判断null

  • string

string是常用的类型,它具有不可变性:就是一旦赋值,就不可变,如果再赋值 ,就重新开辟内存空间;保留性:如果一个字符串存在,另一个与其相同,他们会指向同一个地址,不会再开辟新内存空间;

下面的Demo作个证明:

public unsafe void Run()
{string a = "abcd";string b = "abcd";fixed (char* p = a){Console.WriteLine("原a字符串地址= 0x{0:x}", (int)p);}fixed (char* p = b){Console.WriteLine("原b字符串地址= 0x{0:x}", (int)p);}b = b+"efg";fixed (char* p = b){Console.WriteLine("新b字符串地址= 0x{0:x}", (int)p);}
}

结果

string还提供了一些其他方法:

string.Empty,和""是一样的;

string.IsNullOrEmpty(string)判断一个字符串==null或==""返回true

string.IsNullOrWhiteSpace(string) 判断一个字符串==null或==""或==" "返回true

  • 判断Null

如果有这样一段代码:

var appOrder = new AppOrder();
if (appOrder == null)
{WriteLine("appOrder == null:appOrder is null");
}

你觉结果会输出吗?

常理是不会输出appOrder == null:appOrder is null但真正的结果是还真不一定,这里不能被new AppOrder欺骗了,因为还要看AppOrder对==的理解是什么。

如果代码是这么写:

class NullDemo : Demo{public void Run(){var appOrder = new AppOrder();if (appOrder == null){WriteLine("appOrder == null:appOrder is null");}       }}class Order{public static bool operator ==(Order left, Order right){return true;}public static bool operator !=(Order left, Order right){return true;} }
class AppOrder : Order
{
}

appOrder == null:appOrder is null还真能输出,因为==被赋予了永恒相等,看起来判断为null用==不靠谱,那用什么呢?

 if (appOrder is null){WriteLine("appOrder is null:appOrder is null");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net html5页面缓存,详解HTML5中的manifest缓存使用

起源html5之前的网页,都是无连接,必须联网才能访问,这其实也是web的特色,这其实对于PC是时代问题并不大,但到了移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得…

机器学习的最佳学习路线原来只有四步

AI这个词相信大家都非常熟悉,近几年来人工智能圈子格外热闹,光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域,Python已经成为了主流。一方面因为这门语言简单易上手&#x…

ASP.NET Core Filter如何支持依赖注入

概述通过使用 ASP.NET Core 中的筛选器,可在请求处理管道中的特定阶段之前或之后运行代码。内置筛选器处理任务,例如:授权(防止用户访问未获授权的资源)。响应缓存(对请求管道进行短路出路,以便…

做流向图_各类型供热暖系统图大全,一饱眼福!

↑ 点击上方“暖通风向标”关注我们推广.暖通风向标本文来源:制冷网好书推荐做热泵这几本书你不得不看!区域供热系统热电联产系统地热水供暖系统即热式生活热水系统即热式特点:可保证用户随时随地均有热水供应,系统紧凑,无需储罐&…

怎样和程序猿谈一场不散场的爱情

这篇文章就教你如何优(xin)雅(ji)的驯服程序猿男友。先分享2个网友的养猿故事。对于程序员,大家想必会有这么一个印象:生活简单乏味,除了编程、吃饭、睡觉,就是上网、打游戏或者一副…

ITU-R BT.656 协议

ITU-R BT.601和ITU-R BT.656国际电信联盟(International Telecommunication Union)无线通信部门(ITU-R)制定的标准。严格来说,ITU-R BT.656应该是隶属ITU-R BT.601的一个子协议。ITU-R BT.601是演播室数字电视编码参数…

一年增加1.2w星,Dapr能否引领云原生中间件的未来?

作者 | 敖小剑Dapr 将引领云原生时代应用和中间件的未来。Dapr 是由微软发起的云原生开源新项目,在今年 2 月份刚刚发布了 v1.0 正式版本。虽然推出至今不过一年半时间,但 Dapr 发展势头十分迅猛,目前已经在 GitHub 上收获了 1.2w 星。阿里是…

kylin如何支持flink_日均万亿条数据如何处理?爱奇艺实时计算平台这样做

1.爱奇艺 Flink 服务现状爱奇艺从 2012 年开始开展大数据业务,一开始只有二十几个节点,主要是 MapReduce、Hive 等离线计算任务。到 2014 年左右上线了 Storm、Spark 实时计算服务,并随后发布了基于 Spark 的实时计算平台 Europa。2017 年开始…

茫茫内存,我该如何用 windbg 找到你 ?

一:背景 1. 讲故事前天wx上有个朋友丢给我一个dump,让我帮忙鉴定一下某些敏感信息在内存中是否也是加密的,现在数据安全很重要,不仅数据库中的信息要加密,灌到内存后数据同样也需密文存储,随用随解密&#…

一日一技:在Ocelot网关中实现IdentityServer4密码模式(password)

概述IdentityServer4 是为ASP.NET Core 2.系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证框架。将identityserver部署在你的应用中,具备如下的特点可以为你的应用(如网站、本地应用、移动端、服务)做集中式的登录逻辑和工作流控制…

uibot在子程序执行js失败_使用 Node.js 将珍藏的 bash 脚本封装成命令行工具

阐述如何将一个常用的 bash 脚本融入 npm 生态之中,此处以最近遇到的一个 CR 提交脚本为例。背景作为程序猿,大家或多或少地都用过 GitHub 上的 merge request 功能。当然,除了这类 Code Review 方式,不少公司都有自己的 Code Rev…

如何提高Debug效率

大家好,我是Z哥。可以不夸张地说,程序员可能有一半的时间都在修bug。虽说,根据28原则大部分bug都可以在搜索引擎上搜到(业务性bug除外),但是往往剩下的那20%bug会花费我们80%的时间。虽然解决这个问题最好的…

baidumap vue 判断范围_懂一点前端—Vue快速入门

01. 什么是 VueVue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架,是当下很火的一个 JavaScript MVVM 库,是以 数据驱动和组件化 的思想构建的。MVVM 模式简述下图不仅概括了 MVVM 模式 (Model-View-ViewModel)&#xff0c…

如何在 C#9 中使用顶级程序 (top-level)

当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 console 程序,想象一下,如果去测试一个 类库 或者 API 的功能,通常你会用 Console 程序去实现,在开始工作的时候会发现你受到了 C# 标准模板的限制…

跨部门不配合工作_跨部门协作,队友总是“甩锅”,这三个方法教你快速避坑!...

在日常的工作中,你觉得跨部门沟通的时间占用了多少时间?前阵子我经常会看到有人抱怨,说跨部门沟通的工作实在太难了,同事总是推脱扯皮,领导交代下来的事情,要么说不是自己的职责,要么说以前没做…

模型存储在哪里_最强的模型工作收纳站「Artty Station」登场!

大部分做模型的人,都有同一个梦想——那就是「属于自己的模型空间」。但很少有人,有足够的空间去收纳自己的模型工具。而现在,一款号称史上最强的模型收纳站「Artty Station」横空出世了,现在正在日本网站Makuake上进行众筹&#…

.NET6 中的 PriorityQueue

.NET6 中的 PriorityQueueIntro.NET 6 中引入了一个新的集合类型 PriorityQueue,正如它的名字那样,在普通的 Queue 基础之上增加了优先级的支持,接下来就一起来看一下怎么使用,以及一些常用的使用场景介绍。Get Started来看一个简…

简单而不简陋﹣wp7视觉点滴

一直就很期待,引入了Metro设计理念的wp7的真实操作体验,现在终于如愿了。拿到测试机,首先迅速的过了一遍,第一印象就是界面简单明了,没有华丽的高光、没有跌宕的质感,真的感觉就像在公共场所看到的信息指示…

ros发布节点信息python_vscode开发ROS1(13)-python实现话题通信(msg)

写在最前面1, ros也是可以使用python进行编程的, 而且相比c来说, ros更加简单.使用python创建第一个ROS程序1, 在ros_test目录下, 新建一个scripts文件夹.2, 修改CMakeLists.txt文件, 在find_package中添加rospyfind_package(catkin REQUIRED COMPONENTS roscpp ... #其他的包 …

BeetleX 之 WebApi网关1.5.8发布

这一版本的主要升级了BeetleX的基础网络库,主要解决在某些情况导致解释http协议cpu暴增长的问题,同时使用BeetleX新版本针对的IndexOf的优化,使http协议解释上有着一定程度的性能提升。新版本同样也是支持win64和linux64两个版本,…