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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#实用小知识:string和判断null相关的知识,希望对你有一定的参考价值。

  • 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"); }

以上是关于C#实用小知识:string和判断null的主要内容,如果未能解决你的问题,请参考以下文章

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

100个 Unity实用技能| C# 中List 使用Exists方法判断是否存在符合条件的元素对象

100个 Unity实用技能| C# 中List 使用Exists方法判断是否存在符合条件的元素对象

C#程序员经常用到的10个实用代码片段 - 操作系统

C#程序员经常用到的10个实用代码片段

C#实用小知识:字符串里的换行