C#是否支持inout参数?

Lee*_*ite 17 c# parameters function out

在C#中,我使用a StreamReader来读取文件,每行一行.我还保留当前行的编号int,以报告可能的错误消息.

阅读每一行都会进行一些测试(例如,开头的行#是注释,需要跳过),所以我打算将整个阅读过程放在一个函数中,这将继续阅读,直到它遇到一个有用的行,然后返回该行.如果遇到EOF它就会返回null.

当我将此函数定义为时,我认为我很聪明string read(StreamReader sr, out int lineNumber),但现在事实证明C#将无法像lineNumber++在函数内部那样做.它假定变量尚未分配,可能是因为它无法知道它是否已在此函数调用之前分配.

所以,问题很简单:我如何指定这个变量是一个inout参数(我认为这是一个术语;我听说它是​​在其他编程语言的上下文中提到的)?这首先是可能的吗?我绝对不会成为lineNumber班上的一员,所以这不是一个选择.

pyr*_*lus 18

在这种情况下,您需要一个ref参数而不是out.使用out关键字,分配/实例化值的责任在于调用的被调用方法; 与ref它位于方法之外被调用.

另见:何时使用ref vs out