【发布时间】:2012-02-20 00:03:22
【问题描述】:
我有一个使用 params 关键字的方法,如下所示:
private void ParamsMethod(params string[] args)
{
// Etc...
}
然后,我使用各种参数组合调用该方法:
// Within the method, args is...
ParamsMethod(); // - a string array with no elements
ParamsMethod(null); // - null (Why is this?)
ParamsMethod((string)null); // - a string array with one element: null
ParamsMethod(null, null); // - a string array with two elements: null and null
ParamsMethod("s1"); // - a string array with one element: "s1"
ParamsMethod("s1", "s2"); // - a string array with two elements: "s1" and "s2"
我了解所有情况,除了第二个。有人能解释一下为什么ParamsMethod(null) 导致args 成为null,而不是一个包含一个空元素的数组吗?
【问题讨论】:
-
既然您知道了答案,您就可以解决这个难题了。您有两种方法,
void M(object){}和void M(params object[]){}。你打电话给M(null)。选择了哪个重载,传递给它的是什么,为什么? -
我以前遇到过这种情况。我认为只是重命名了其中一种方法。 :)