C#中空字符串的区别

来源:百度知道 编辑:UC知道 时间:2024/06/07 10:39:50
string aa = String.Empty;
string aa = null;
string aa = "";
有什么区别
在string bb

if(bb==aa)当aa不同时,如何写这个判断式

首先
你肯定没有明白C#和传统的C\C++的不同
C#中每一个变量名事实上都是相当于C\C++的一个指针。
而且C#中只有类和对象,没有脱离类和对象单独存在的函数和变量。
所有C#中与C\C++对应的各种量(如int,float,sting等等)都是类的对象。
任何C#中的函数都必须以类的方法的形式实现。

一、
string aa;

string aa = null;
一样。
他么都是声明了一个sting对象的名字aa(可以理解为C\C++中指向sting类型变量的指针,或者说引用),但是并没有赋予aa一个与之对应的实际对象(没有内存分配)。所以aa在这里什么都不是,等待分配。

二、
string aa = String.Empty;

string aa = "";
以及
string aa;
aa="";
是一样的。
aa被声明为一个空的字符串。
实际上是aa在这里代表了一个内容为空字符串的字符串对象。

三、
究竟前面两种情况在使用中有什么不一样呢?
前者由于没有指向具体对象,所以在没有将它指向具体对象之前,不能用“.”运算符引用string类对象的很多方法和属性。
但是后者就可以。

String.Empty 等于 ""
都是分配一个0长度的内存地址

null就是连地址都没分配.

null 和""是不同的!

empty
使用 Empty 常量值初始化字符串可新建字符串长度为零的 String 对象。零长度字符串的字符串表示形式为 ""。使用 Empty 值(而不是 null)初始化字符串可以降低发生 NullReferenceException 的可能性。

Null 字符串和空字符串
空字符串是不包含字符的 System.Str