A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨本国 黑马帝   /  2011-11-30 20:34  /  2094 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#使用引用替代指针,那么C#的引用和C++的引用一样吗?  

评分

参与人数 1技术分 +1 收起 理由
朱勋 + 1

查看全部评分

4 个回复

倒序浏览
王伟 黑马帝 2011-11-30 20:36:11
沙发
不完全,基本的思想是一样的,但是一个重要的区别是C#的引用可以是null。因此你不能确认C#的引用一定会是一个有效的对象。如果试图使用一个值为null的引用,一个NullReferenceException 异常将被抛出。

评分

参与人数 1技术分 +1 收起 理由
朱勋 + 1

查看全部评分

回复 使用道具 举报
王硕 黑马帝 2011-11-30 20:42:59
藤椅
我举个例子:
例如,看一看以下的方法:

void displayStringLength( string s ) {

Console.WriteLine( “String is length {0}”, s.Length ); }

如果这样调用它,这种方法将产生一个NullReferenceException 异常:

string s = null;

displayStringLength( s );

当然有些情况你认为产生这样一个异常是完全可以接受的结果,但是在这个例子里最好按下面的代码改写一下:

void displayStringLength( string s ) {

if( s == null )

Console.WriteLine(“String is null”);

else

Console.WriteLine(“String is length {0}”, s.Length );

}

评分

参与人数 1技术分 +1 收起 理由
朱勋 + 1

查看全部评分

回复 使用道具 举报
完了。。。谁知到你们都这么牛。。。
回复 使用道具 举报
C#语言中的引用指的是引用类型,就是说除了普通值类型之外的都是引用类型,引用类型声明在栈上,而初始化在堆上,栈上只存堆上变量的地址。

C++中所说的引用,是变量之间的关系,可以引用值类型,也可以引用类类型,也是存在栈上,里面存引用的那个变量的地址。

不知道这么说准确不,希望高手指点!

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马