C# 方法调用时params如何传入指定参数 10

我现在有一个方法是publicstaticIHtmlStringRenderJS(stringattributes="type=\"text/javascript\"",... 我现在有一个方法是public static IHtmlString RenderJS(string attributes = "type=\"text/javascript\"", params string[] paths)。
然后我想调用这个方法,其实attributes一般都可以省略,因此采用指定参数的形式调用,AssetsHelper.RenderJS(paths: "/assets/js/html5shiv.js", "/assets/js/respond.min.js"),但是这样写报错,请问怎么写才是对的?
展开
 我来答
dong_1984dd
推荐于2016-03-22 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:227万
展开全部

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。

何宜校
2013-10-01 · TA获得超过1691个赞
知道小有建树答主
回答量:702
采纳率:0%
帮助的人:960万
展开全部

参数 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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qubo8816
2013-10-01 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:120万
展开全部
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个整数
}


数组参数传值很灵活的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式