当前位置:  开发笔记 > 编程语言 > 正文

为什么我必须在C#中指定"out"关键字?

如何解决《为什么我必须在C#中指定"out"关键字?》经验,为你挑选了3个好方法。

在我提出问题之前,请看一下这个示例函数:

DateTime.TryParse("01/01/2000", out oDate)

为什么我需要指定out关键字?编译器不应该从函数的定义中知道这一点吗?

我出于纯粹的好奇心问这个问题,希望我能学到一些关于编译器的新知识.

我还应该澄清一下,我特别询问C#.NET 3.5编译器.



1> Andrew Hare..:

out关键字可以由编译器隐含,但我的理解是C#团队决定使out函数调用者明确要求关键字,以提高参数性质的可见性.


"因为Anders Hejlsberg这么说"

2> Malfist..:

编译器知道,你可能不知道.这是一种让你知道你传递的参数可以在你传递给它的函数中改变的方法.



3> JaredPar..:

这不是关于编译器知道什么,而是关于确保开发人员意识到这个调用可以并且将改变变量X的值.

其中很多都是在C++中的根源,其中参考值不需要调用站点监视器.查看C++调用并确切地知道它将做什么是不可能的.通过引用传递的参数和C++中的值在语义上有很大差异.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有