请考虑以下方法签名:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
我怎样才能确定WriteLine方法的"myObjects"参数使用params关键字并且可以接受可变参数?
请考虑以下方法签名:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
我怎样才能确定WriteLine方法的"myObjects"参数使用params关键字并且可以接受可变参数?
检查参数上是否存在 [ParamArrayAttribute]
。
带有params
关键字的参数将始终是最后一个参数。
如果应用了ParamArrayAttribute,请检查ParameterInfo:
static bool IsParams(ParameterInfo param)
{
return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
IsDefined
比使用 GetCustomAttributes
更有效率。 - stakx - no longer contributing稍微更短且更易读的方式:
static bool IsParams(ParameterInfo param)
{
return param.IsDefined(typeof(ParamArrayAttribute), false);
}