我问的原因是,它只在方法参数声明中有效,对吧?我试图在函数体内创建一个名为“params”的变量,但这当然不是什么大问题,只是想知道微软为什么选择将其作为全局关键字而不是上下文关键字。
我问的原因是,它只在方法参数声明中有效,对吧?我试图在函数体内创建一个名为“params”的变量,但这当然不是什么大问题,只是想知道微软为什么选择将其作为全局关键字而不是上下文关键字。
var @params = new int[] { 1, 2 };
tvanoffson的回答认为使“params”具有上下文意义很难。实际上,并不是那么难。考虑以下内容:
void M(params x)
假设在这种情况下,我们需要首先尝试查找类型'params'。如果我们可以找到一个,那太好了,我们完成了。如果不能找到,则有一点问题。例如,假设x的位置被替换掉了。
void M(params Int32)
看起来,params关键字只在方法参数声明中有用,但我同意微软的观点,不应该让关键字用于实例名称。也许他们保留了在C#8.0中使用类似功能的能力:
params Customers = DB.GetCustomerList();
或者在本地作用域中也允许params
.