将零参数作为参数传递——行为是在哪里定义的?
C# 规范。允许您调用
void foo(params int[] x)
零参数的函数。然而我在C#lang中没有找到。规格关于进一步行为的一句话—— foo 会得到空数组还是空引用吗?我还检查了 MSDN——什么也没有。
行为是在哪里定义的?
注意:我不是在问 VS 的行为方式,而是在问语言的设计。
C# spec. allows you to call a function
void foo(params int[] x)
with zero parameters. However, I didn't find in C# Lang. Spec. a word on further behaviour -- will foo get empty array or null reference? I checked also MSDN -- nothing.
Where the behaviour is defined?
NOTE: I am not asking how VS behaves, I am asking about design of the language.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
C# 语言规范第 7.4.1 节(参考:C# 3.0 规范 )
这是本节的最后一行
Section 7.4.1 of the C# Language Specification (ref: C# 3.0 spec)
It's the last line of the section
在同一部分中给出了一个示例:
产生输出
此示例说明了预期的行为:空数组
In the same section an example is given:
produces the output
This example illustrates the expected behavior: empty array
对于被调用者来说,它等于
void foo(int[] x)
并且传递n
参数将为您提供一个包含n
元素的数组。因此零参数将被转换为 int[0]。For the callee it is equal to
void foo(int[] x)
and passingn
parameters will give you an array withn
elements. So zero parameters will be translated into an int[0].