调用具有多个默认值的方法

时间:2014-02-19 15:26:46

标签: c# methods

我很想知道,因为我有一个带有多个默认参数的方法

private string reqLabel(string label, byte fontSize = 10, string fontColour = "#000000", string fontFamily = "Verdana"  )
{
   return "<br /><strong><span style=\"font-family: " + fontFamily + ",sans-serif; font-size:" +fontSize.ToString() + "px; color:"+ fontColour + "; \">" + label +" : </span></strong>";
}

当我调用方法时,我必须按顺序执行

reqLabel("prerequitie(s)")
reqLabel("prerequitie(s)", 12) 
reqLabel("prerequitie(s)", 12 , "blue")
reqLabel("prerequitie(s)", 12 , "blue", "Tahoma")

所以我的问题是,有没有办法跳过前几个默认参数?

假设我想只输入颜色,而像这样的字体系列:

reqLabel("Prerequisite(s)" , "blue" , "Tahoma") 

/* or the same with 2 comma's where the size param is supposed to be. */

reqLabel("Prerequisite(s)" ,  , "blue" , "Tahoma") 

3 个答案:

答案 0 :(得分:9)

是的,可以通过明确命名:

reqLabel("Prerequisite(s)" , fontColour: "blue", fontFamily: "Tahoma")

请注意,命名参数应始终是最后一个 - 您无法在命名后指定定位参数。换句话说,这是不允许的:

reqLabel("Prerequisite(s)" , fontColour: "blue", "Tahoma")

答案 1 :(得分:3)

使用named arguments

reqLabel("prerequitie(s)", fontSize: 11)

答案 2 :(得分:2)

您需要使用名称参数调用:

reqLabel("Prerequisite(s)" , fontColour: "blue" , fontFamily: "Tahoma")