可选参数,与方法签名中的 Out 混合
我正在用一些带有命名参数和可选参数的方法替换一系列方法重载。
虽然这不会造成任何问题,但我发现在使用“out”时有一个扳手正在工作。
例如,
如果我要调用:
foo(int a, out int b, int c = -1, string d = "")
编译器会抛出错误,因为每当我调用此方法时,它都不会看到它或将其识别为该方法的相关签名。
我意识到任何可选参数都必须位于强制参数之后 ->对于带有“out”的参数是否有这样的规则,或者我是否遗漏了任何明显的东西?
I'm replacing a series of method overloads with a handful of methods with named and optional parameters.
While this is causing no problem, I am finding that there's a spanner in the works while using 'out'.
e.g.
if I was to call :
foo(int a, out int b, int c = -1, string d = "")
The compiler throws an error, as any time I call this method, it doesn't see it or recognise it as a relevant signature for this method.
I realise that any optional paramaters HAVE TO come after the mandatory ones -> is there any such rule for parameters with 'out', or am I missing anything obvious?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的意思是调用按照示例定义的方法,那么(例如):
out
参数不能是可选的(这意味着它必须出现在可选参数之前) ),但可以在任何地方指定(作为命名参数) - 例如:如果您希望
b
是可选的,则需要重载:现在您可以调用:
If you mean about calling a method defined as per the example, then just (for example):
An
out
parameter cannot be optional (which means it must appear before the optional ones), but can be specified anywhere (as a named argument) - for example:If you want
b
to be optional, you would need an overload:Now you can call: