我正在尝试将一些PHP代码移植到C#,我遇到了这种形式的PHP函数:
function DoStuff($myVar, array $myArray1, array $myArray2 = array())
{
// some code not involving $myArray2
if ($myArray2)
{
// do things with $myArray2, but if I arrive here, what
// condition was met?
}
}
我最好的猜测(这可能是完全错误的)在查看php.net中的一些适当的页面后发现了什么:
$myArray2
是可选的,但如果没有提供,则数组为空if
条件检查是否使用一个或多个元素传入$myArray2
这是对的吗?如果没有,那是对的?谢谢!
答案 0 :(得分:6)
是的,这是正确的。如果为$myArray1
或$myArray2
传递了不是数组的内容,该函数也会抛出致命错误。
答案 1 :(得分:2)
你是对的,这是一个解释:
类型提示array
表示$myArray2
只能接受数组。默认值array()
表示$myArray2
是可选的,如果未传递,则会分配一个空数组。
鉴于$myArray2
条件时if
唯一可能是数组,您可以确认类型转换为布尔值所接受的内容。在这种情况下,除非数组没有元素,否则数组总是转换为true。
旁白:您应该注意,虽然将NULL作为参数传递给$myArray1
和$myArray2
目前是非法的,但设置是合法的默认值$myArray2
为NULL。在这种情况下,您还可以将NULL传递给该参数。此外,条件也将检查参数未设置为NULL。