为什么C#中的"out"参数作为语言构造存在?
为什么它首先存在?是否有更好的语言功能可以获得"out"参数可以获得的相同效果?
使值类型的行为类似于引用类型,这不奇怪吗?
是不是有更好的方法从方法返回多个值?
它是一个历史性的东西,意味着C#的第一个版本没有办法实现使用out参数可以实现的东西,但现在有更新的功能,它只是保留在语言中以便向后兼容?
在阅读类似的问题时,我没有发现任何重复.
我很想听到这样的话:"看,这是一个只能通过使用"out"参数语言结构来解决的问题,这里有一个代码示例......".
或者,"看,这曾经是解决以下问题的唯一方法......代码示例......,但是因为C#版本...更好的解决方法就是这样......代码示例......" .
没有意见.
Han*_*ant 12
C#编译器执行明确的赋值检查.这要求它确切地知道何时分配变量.通常不难理解,任务很容易看出来.
但是有一个角落情况是通过引用另一个方法传递变量.该方法是否要求在调用之前分配变量,然后修改它,或者它是否只分配它?编译器一般无法知道,该方法可能存在于方法体不可用的另一个程序集中.例如,适用于任何.NET Framework程序集.
所以你必须明确它,ref当方法需要在调用之前分配参数out时,当方法只分配它时,你使用它.很棒的功能顺便说一句,它消除了一大堆非常常见的错误.
关于这个问题的其他错误答案的一个注释.数据流在pinvoke中也起着重要作用,pinvoke marshaller需要知道转换由非托管函数返回的任何数据.它不讲究了VS REF关键字,只对[In]与[Out]属性.更多关于这个Q + A的细节.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |