您当前的位置: 首页 >  c#

Allen Su

暂无认证

  • 1浏览

    0关注

    431博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【C# 教程系列第 3 篇】c# 中 null 与 string.Empty、““、三者的区别

Allen Su 发布时间:2018-12-17 22:54:22 ,浏览量:1

这是【C# 教程系列第 3 篇】,如果觉得有用的话,欢迎关注专栏。

文章目录
      • 一:null 类型
      • 二: "" 和 string.Empty 的区别
      • 三: "" 和 null 的区别
      • 四:判断字符串为空的方法
      • 五:c++ 中的 NULL 指针 与 c# 中 null 的区别

一:null 类型

null 关键字表示不引用任何对象的空引用。

null 是引用类型变量的默认值,所以也只有引用型的变量可以为 null,如果 int b = null 的话,那就会报错,因为 int 是值类型的。 在这里插入图片描述 此外,为编程规范,在定义指针时,一般需要初始化。而 null 一般用来初始化指针变量。 例如:char str = null; 表明该变量不指向任何有效的内存区域,避免野指针。

拓展 如果想把 null 赋值给 int 也不是不可以,如下代码 在这里插入图片描述 通过控制台输出打印 a 的结果是 Null。

int?:表示可空类型,就是一种特殊的值类型,它的值可以为 null,用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0。

二: “” 和 string.Empty 的区别

首先,这两个都是表示空字符串。只不过 “” 分配一个长度为 0 的存储空间,string.Empty不分配存储空间, (为了以后跨平台,最好还是用string.Empty)

我这里举了一个例子,然后在控制台输出,代码如下 在这里插入图片描述 在这里插入图片描述 控制台都输出了判断里的内容,可见无论是 “” ,还是string.Empty,其长度都为0。

所以,大多数情况下, “” 和string.Empty是可以相互转换的。

三: “” 和 null 的区别

在这里插入图片描述 str_1 是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的。

str_2 只是定义了一个string 类的引用,str_2并没有指向任何地方,在使用前如果不实例化的话,都将报错。

我举个例子更容易理解一点

string str_1 = “” ; 我给你了一个钱包,但是钱包里没有钱。

string str_2 = null; 我连钱包都没有给你。(这个例子很好理解吧)

四:判断字符串为空的方法

在这里插入图片描述 所以,从节约性能上来讲,以后再判断字符串为空的时候,就可以用 null 或者 Length == 0 来判断,虽然节省的很少,但这里优化一点,其它地方优化一点,加起来就很可观了。

此外:尤其强调一点,所有控件 (是控件,不是自己声明的字段) 的Text 属性在未赋值的情况下是空值 “”, 而不是 null。

实验图如下 在这里插入图片描述 在这里插入图片描述 从控制台输出可以看到,Text 未赋值的情况下,其值为 “”,而不是 Null。

五:c++ 中的 NULL 指针 与 c# 中 null 的区别

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯,赋为 NULL 值的指针被称为空指针。NULL 指针是一个定义在标准库中的值为零的常量。

c++ 里面空的写法就是 NULL,后来出了一个新的关键字专门用来表示空指针,写法是nullptr。

c++ 里面,NULL 本身就是一个宏定义,即 #define NULL 0。所以 NULL 可以转换为int类型的变量。

c# 里面 nulll 是一个关键字,用来表示引用类型为空,是不可以转换为 int 类型的。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。

结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
关注
打赏
1656491068
查看更多评论
立即登录/注册

微信扫码登录

0.0415s