zoukankan      html  css  js  c++  java
  • C#中string.Empty和""、null的区别

     string.Empty是string类的一个静态常量,而""则表示一个空字符串。

     string是一种特殊的引用类型,它的null值则表示没有分配内存。

     使用ILSpy反编译String类,可以看到string.Equalus方法重写了Object的Equalus()方法:先比较引用,再比较字符串的内容,地址相同,值必相同。

     1     // 重写Object方法
     2     [__DynamicallyInvokable, ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
     3         public override bool Equals(object obj)
     4         {
     5             if (this == null)
     6             {
     7                 throw new NullReferenceException();
     8             }
     9             string text = obj as string;
    10             return text != null && (this == obj || (this.Length == text.Length && string.EqualsHelper(this, text)));
    11         }
    12     // 重载Equals
    13        [__DynamicallyInvokable, ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
    14         public bool Equals(string value)
    15         {
    16             if (this == null)
    17             {
    18                 throw new NullReferenceException();
    19             }
    20             return value != null && (this == value || (this.Length == value.Length && string.EqualsHelper(this, value)));
    21         }

     string.Empty和空字符串比较结果:

     1      static void Main(string[] args)
     2         {
     3             String emptyString = "";
     4 
     5             // True
     6             Console.WriteLine(emptyString == String.Empty);
     7 
     8             // True
     9             Console.WriteLine(emptyString.Equals(string.Empty));
    10         }
  • 相关阅读:
    nginx rewrite 伪静态重写学习笔记
    正则表达式相关知识
    rpm的含义
    find命令的使用
    chmod的运用方式
    [GO]数组的比较和赋值
    [GO]二维数组的介绍
    [GO]变量内存和变量地址
    [GO]给导入包起别名
    阿里云负载均衡SLB 七层https协议 nginx 获取真实IP
  • 原文地址:https://www.cnblogs.com/xinhuan/p/4821860.html
Copyright © 2011-2022 走看看