C#字符串为空的几种情况

我们知道,在C#中,string是引用类型的。为空情况有以下三种:

1、  string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间。

2、String str2=String.Empty:同上。但是这是个静态方法,不会反复的重复申请内存,要优于1中的方式。

3、String str3=null:只定义了一个引用(栈),没有指向任何地方,也未在堆上分配存储空间。在使用前如果不实例化的话,将报错。

知道了string的几种空类型的区别,那么我们怎么来判断一个字符类型的变量是否为空呢?

对于一个string类型的变量a,你会用哪种方式判断它为空,一般有以下三种:     a == ""     a == String.Empty a.length == 0     那么,你会用哪种方式判断?效率上 3 > 2 > 1,也就是a.length == 0 > a == String.Empty > a == ""。    

那么,结论是,赋空字符串请用String.Empty(NULL不能输出,Empty可以输出),判断空字符串请用length。

当然也可以使用系统提供的方法:String.IsNullOrEmpty(“XX”)方法,效率打了点折扣,但是代码可读性还是书写的便利性还是很大的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分布式系统和大数据处理

.Net中的反射(查看类型信息) - Part.2

简单来说,反射提供这样几个能力:1、查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata);2、迟绑定(Late-Binding)方法和属性。3...

1153
来自专栏韩伟的专栏

框架设计原则和规范(四)

祝大家平安夜平安,圣诞节快乐! 此文是《.NET:框架设计原则、规范》的读书笔记,本文内容较多,共分九章,将分4天进行推送,今天推送最后两章。 1. 什么是好的...

4074
来自专栏java达人

js的回调函数详解

在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用。既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递...

2955
来自专栏蘑菇先生的技术笔记

探索c#之递归APS和CPS

2907
来自专栏老九学堂

C语言这个基础知识,99%的人都了解不全面

说明:这是学C语言最基本的知识点,简单的使用不难, 但是里面的一些细节和原理就值得我们好好推敲了,想要学好C语言或者编程语言的小伙伴,真的可以好好看看哦~

1270
来自专栏技术博客

设计模式之三(工厂方法模式)

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。

1592
来自专栏mySoul

TypeScript 接口

// 注意在上方中并不会对静态的,进行检查。只会对非静态的部分,即非构造函数部分进行检查

1264
来自专栏技术博客

设计模式之二(简单工厂模式)

  简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来...

681
来自专栏技术博客

C#简单的面试题目(二)

实例化对象  new Class();        隐藏基类方法,即覆盖方法  public  new xxx(){}

1091
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(Function专栏)

汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai

843

扫码关注云+社区