黑马程序员技术交流社区

标题: C#引用 [打印本页]

作者: 杨本国    时间: 2011-11-30 20:34
标题: C#引用
C#使用引用替代指针,那么C#的引用和C++的引用一样吗?  
作者: 王伟    时间: 2011-11-30 20:36
不完全,基本的思想是一样的,但是一个重要的区别是C#的引用可以是null。因此你不能确认C#的引用一定会是一个有效的对象。如果试图使用一个值为null的引用,一个NullReferenceException 异常将被抛出。


作者: 王硕    时间: 2011-11-30 20:42
我举个例子:
例如,看一看以下的方法:

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 );

}


作者: 杨楠    时间: 2011-11-30 21:21
完了。。。谁知到你们都这么牛。。。
作者: 董志    时间: 2011-12-2 13:42
C#语言中的引用指的是引用类型,就是说除了普通值类型之外的都是引用类型,引用类型声明在栈上,而初始化在堆上,栈上只存堆上变量的地址。

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2