C#实用小知识:string和判断null
2022/2/4 11:46:35
本文主要是介绍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"); }
想要更快更方便的了解相关知识,可以关注微信公众号
这篇关于C#实用小知识:string和判断null的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#