这是【C# 教程系列第 3 篇】,如果觉得有用的话,欢迎关注专栏。
- 一:null 类型
- 二: "" 和 string.Empty 的区别
- 三: "" 和 null 的区别
- 四:判断字符串为空的方法
- 五:c++ 中的 NULL 指针 与 c# 中 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。
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯,赋为 NULL 值的指针被称为空指针。NULL 指针是一个定义在标准库中的值为零的常量。
c++ 里面空的写法就是 NULL,后来出了一个新的关键字专门用来表示空指针,写法是nullptr。
c++ 里面,NULL 本身就是一个宏定义,即 #define NULL 0。所以 NULL 可以转换为int类型的变量。
c# 里面 nulll 是一个关键字,用来表示引用类型为空,是不可以转换为 int 类型的。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。