当前位置:编程学习 > C#/ASP.NET >>

【急切求助】帮忙区别C++和C#中的null和""(空字符串)?

向大家请教一个问题:请帮忙区别C++和C#中的null和""(空字符串);
谢谢啦。。。 --------------------编程问答-------------------- 我的理解null是没有分配内存空间,空字符是分配了空间但是没东西里面 --------------------编程问答-------------------- null是指针指向一个未知的地址,

“”是一个已知地址,地址中装的内容是空字符串 --------------------编程问答-------------------- この問題は面白いですね。。
jscn123789abcさん、インターネットで探します、この方法が一番いいですね。 --------------------编程问答-------------------- 你可以这样理解啊。。。null是个对象,“”是个字符串。。将null转型会报异常,将“”转则不会 --------------------编程问答-------------------- ""是个空字符串。null就是空 --------------------编程问答--------------------
引用 1 楼 snipzy 的回复:
我的理解null是没有分配内存空间,空字符是分配了空间但是没东西里面

恩。 --------------------编程问答--------------------
引用 6 楼 luckyp 的回复:
引用 1 楼 snipzy 的回复:
我的理解null是没有分配内存空间,空字符是分配了空间但是没东西里面 
 
恩。

“”不是没有东西。。。是东西就是空串。 --------------------编程问答-------------------- 看来这里高手很多啊 --------------------编程问答-------------------- 一楼正解! --------------------编程问答--------------------
引用 2 楼 zetee 的回复:
null是指针指向一个未知的地址, 

“”是一个已知地址,地址中装的内容是空字符串


Null是类型什么都没有
""是字符类型,但是内容为空 --------------------编程问答-------------------- 4楼的话不太理解:null是个对象,“”是个字符串。。将null转型会报异常,将“”转则不会

字符串好像也是对象啊。 --------------------编程问答-------------------- c++中并没有null类型,实际上是个定义的类型:#define NULL 0
C#中关于null的解释:null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。 --------------------编程问答-------------------- 顺便问另外一个问题:

假设某数据库包括用户名(UserName)、密码(Pwd)、工号(EmpNo)三个字段;
通过工号(EmpNo)用DataReader读数据库,找该工号对应的密码;
假设有两种情况:密码为空和没找到密码,
reader["EmpNo"].ToString()的返回值是null还是"" ? --------------------编程问答-------------------- 还有就是判断某文本框是否为空,应该用下面哪行代码比较合适?

(1)if (txtBox1.text == null)

(2)if (txtBox1.text == "")

(3)if (txtBox1.text == "0")

(4)if (txtBox1.value == null)

(5)if (txtBox1.value == "")

(6)if (txtBox1.value == "0") --------------------编程问答-------------------- 空集vs没有元素的集合 --------------------编程问答-------------------- mark
--------------------编程问答-------------------- 判断DataReader读出来的东东是不是“空”
if (reader["EmpNo"] == System.DBNull.Value) {...}

判断某文本框中文本是否为空
if (textBox1.Text == "") {...} --------------------编程问答-------------------- 嗯,是第(2)个 --------------------编程问答-------------------- 谢谢楼上朋友的回复... --------------------编程问答--------------------   null是对于对象来说的
  “” 是对于String类型来说的 --------------------编程问答-------------------- 回答:
假设某数据库包括用户名(UserName)、密码(Pwd)、工号(EmpNo)三个字段; 
通过工号(EmpNo)用DataReader读数据库,找该工号对应的密码; 
假设有两种情况:密码为空和没找到密码, 
reader["EmpNo"].ToString()的返回值是null还是"" ?

当然是""
都 Tostring() 了  没找到当然是 "" 

回答:
还有就是判断某文本框是否为空,应该用下面哪行代码比较合适? 

(1)if (txtBox1.text == null) 

(2)if (txtBox1.text == "") 

(3)if (txtBox1.text == "0") 

(4)if (txtBox1.value == null) 

(5)if (txtBox1.value == "") 

(6)if (txtBox1.value == "0")

当然是用(2)。用(1)根本限定不了,应为 .Text 不管有没有值都不了能为 null。只能是 ""  --------------------编程问答-------------------- 学习啦 --------------------编程问答-------------------- 谢谢楼上朋友的回复... --------------------编程问答-------------------- 这样理解,null就代表和内存说,我要一个房间,但是不确定这个房间是哪个,所以只是申明了一下
而""代表我要一个内存空间,里面放的是空东西,等于把房间给定下来了,别的程序将无法使用这个定下来的空间了; --------------------编程问答-------------------- 大家莫激动莫激动,好好说。。嘿嘿。。null对象为空,""值为空。。一个对对象说,一个对值说。。唉,大家说了这么多,楼主不一定理解,动动手去实践下。。哈哈。。你知道怎么用后,不用管字面这么解释。。拿去用就是了。。这样会有误区,钻进牛角尖了。。 --------------------编程问答-------------------- 在C++中Null的值为0
在C++中""的值为char '\0'

--------------------编程问答-------------------- 一个问题,答了两年 --------------------编程问答-------------------- C#声明一个类级别变量或者局部变量,变量会被初始化(整型变量初始化为0,字符串变量初始化为null等);如果要使用该变量,要对变量先进行赋值,否则编译时会出现“使用了未赋值的变量”异常。

这是因为声明一个变量后,比如声明一个整型变量i(int i;),C#会调用.NET Framework类库中的Int32结构的默认构造函数(结构不能声明默认构造函数(没有参数的构造函数)和析构函数)初始化变量(值类型变量初始化为0,字符串变量初始化为null等),但是并不分配内存空间。



C#中,string str=null与string str=""的区别,请尽量用文字说明区别。
string str ="";//初始化对象并分配空间
string str=null;//初始化对象  --------------------编程问答--------------------
引用 26 楼 yangglemu 的回复:
在C++中Null的值为0
 在C++中""的值为char '\0'
--------------------编程问答-------------------- 真是个好问题呀,从08年问到09年,有没有10年的,接个茬! --------------------编程问答-------------------- string a=null  指a不指向任何实例
string a=""   指a指向一个实例,该实例就是堆里面的空字符串
null是针对应用类型来说的
以上两种情况在栈里都要为a分配内存
蛋第二个好要在堆里分配内存的
第一个就不需要了

继续顶吧,顶到2011年 --------------------编程问答-------------------- string a=""虽然分配了内存,但具体分配多少字节有人知道吗? --------------------编程问答-------------------- hah --------------------编程问答-------------------- 看了,不错,我是2011第一个。 --------------------编程问答-------------------- 这不解决了么,看了几个回复觉得都是对的嘛~~
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,