【发布时间】:2013-04-26 07:52:49
【问题描述】:
在 C# 中,我使用StreamReader 来读取文件,每行一行。我还将当前行的编号保存在 int 中,以报告可能的错误消息。
阅读每一行都伴随着一些测试(例如,以#开头的行是cmets,需要跳过),所以我打算将整个阅读过程放在一个函数中,它会一直阅读直到它遇到一个有用的行,然后返回该行。如果遇到EOF,它将简单地返回null。
当我将此函数定义为string read(StreamReader sr, out int lineNumber) 时,我认为我很聪明,但现在事实证明,C# 将无法在该函数中执行类似lineNumber++ 的操作。它假设变量还没有被赋值,可能是因为在这个函数调用之前它无法知道它是否已经被赋值。
所以,问题很简单:我如何指定这个变量是inout 参数(我认为这是术语;我听说它在其他编程语言的上下文中被提及)?这甚至可能吗? 我绝对不会让lineNumber 成为我班级的成员,所以这不是一个选择。
【问题讨论】:
-
在这里定义为 ref more msdn.microsoft.com/en-IN/library/14akc2c7(v=vs.71).aspx
-
c#中
inout的等价物是ref。out也很方便。这就是你要找的东西吗? -
太棒了!这就是我一直在寻找的。谢谢一堆。 :)
标签: c# function parameters out