问题描述
我对C#中的Optional参数感到非常困惑和困惑 我试图完成与C ++和VB相同的操作,如果不需要参数为什么还要传递它,我在下面的函数中使用了以下内容,但是当我使用该函数时,它仍然需要传递一些东西作为参数。 如果不需要传递可选参数以跳过它而只传递必要的参数,有没有办法?
public static void WindowTOpen(string pUrl2Open,[Optional,DefaultParameterValue("")] string pWinName,DefaultParameterValue(0)] int pWidth,DefaultParameterValue(0)] int pHeight,DefaultParameterValue("")] string pWinParams,object sender,System.Web.UI.Page pHtmlPage)
{
//- Default to Page display Minimun Size 800 x 600
if (pWidth == 0) { pWidth = 800; }
if (pHeight == 0) { pHeight = 600; }
if (pWinName.Trim().Length == 0) { pWinName = "NeWin"; }
string _WINDOW_TO_OPEN = "window.open(" + _sDOUBLE_QUOTE + pUrl2Open.Trim() + _sDOUBLE_QUOTE + "," + _sDOUBLE_QUOTE;
_WINDOW_TO_OPEN += pWinName.Trim() + _sDOUBLE_QUOTE + "," + _sDOUBLE_QUOTE + " width=" + pWidth.ToString() + ",";
_WINDOW_TO_OPEN += "height=" + pHeight.ToString();
if (pWinParams.Trim().Length > 0)
{
_WINDOW_TO_OPEN += pWinParams.Trim();
}
else
{
_WINDOW_TO_OPEN += _WIN_OPEN_ParaMS;
}
_WINDOW_TO_OPEN += _sDOUBLE_QUOTE + ")";
ScriptManager.RegisterClientScriptBlock((sender as Control),pHtmlPage.GetType(),"winpop",_WINDOW_TO_OPEN,true);
}
谢谢
解决方法
是的,我们可以通过设置可选参数来实现。在这里,我举一个简单的例子。您可以根据自己的需要使用它。例如
public void Fun1(string p1,int p2,string p3 = null,string p4 = "Test")
{
}
请注意选项参数将始终作为最后一个参数。上面的函数可以用两种方式中的任何一种来调用。
this.Fun1("Test1",123);
this.Fun1(p2:123,p1:"Test1");
希望这对您有所帮助。如果您有任何疑问,请告诉我。