C# 方法调用时params如何传入指定参数 10
然后我想调用这个方法,其实attributes一般都可以省略,因此采用指定参数的形式调用,AssetsHelper.RenderJS(paths: "/assets/js/html5shiv.js", "/assets/js/respond.min.js"),但是这样写报错,请问怎么写才是对的? 展开
1. 参数数组-----params(可以将相同类型,数量可变的多个参数传给一个方法)
2. 引入:一般,参数的数量都是由目标方法声明所确定。然而,有时我们希望参数的数量是可变的。或许最好的方法是为方法传一个数组。然而,这会使调用代码变得稍微复杂一些,因为需要事先构造一个数组,再将这个数组作为参数来传递。
3. 为了简化代码,c#提供了一个特殊的关键字,它允许在调用一个方法是提供数量可变的参数,而不是由方法事先固定好参数的数量.
示例说明:上述例子中方法func可接受数量可变的参数,不管这些参数是以逗号分隔的,还是作为一个数组来传递的。为了获得这样的效果,func方法需要:(1)在方法声明的最后一个参数之前,添加一个parmas关键字。(2)将最后一个参数声明为一个数组。
注意事项:
@1、参数数组不一定是方法声明中的唯一参数。单数必须是最后一个参数。由于只有最后一个参数才可能是参数数组,所以方法最多只能有一个参数数组。
@2、调用者可以为参数数组指定0个参数,这会造成包含0个数据项的一个数组。也可以显示地使用一个数组,而不是以逗号分隔的参数列表,最终生成的CIL代码是一样的。
@3、参数数组是类型安全的------类型必须匹配与数组指定的类型。
@4、假如目标方法的实现要求一个最起码的参数数量,请在方法声明中显示指定必须提供的参数。这样一来,假如要求的参数遗失了,就会导致编译器报错,而不需要依赖于运行时错误处理。例如:使用int max (int first,params int[] operands)而不是int max(params int[] operands),确保至少有一个值传给方法max。
参数 paths 就是一个 string数组,
定义一个数组传入即可。
string[] paths=new string[2]{"/assets/js/html5shiv.js", "/assets/js/respond.min.js"};
RenderJS("type=\"text/javascript\"", paths);
请参考并采纳,谢谢!
你好,你的答案我也明白,但是能不能写成
AssetsHelper.RenderJS(paths: "/assets/js/html5shiv.js", "/assets/js/respond.min.js")
这种形式?而且attribute我想保持缺省
函数定义改成这样,把有默认值的参数放后面
public static IHtmlString RenderJS(string[] paths, string attributes = "type=\"text/javascript\"")
//调用
string[] paths=new string[2]{"/assets/js/html5shiv.js", "/assets/js/respond.min.js"}; RenderJS(paths);
static void MultiParams(params int[] parArr)
{
Console.Write("数组包含{0}个元素:",parArr.Length);
foreach(int i in parArr)
{
Console.Write(" {0} ",i );
}
Console.WriteLine();
}
static void Main(string[] args)
{
int[] arr = {1,2,3,4,5};
MultiParams(arr); //使用一个数组作为参数
MultiParams(10,20); //使用2个整数
MultiParams(5,6,7,8); //使用4个整数
MultiParams() //使用0个整数
}
数组参数传值很灵活的。