C#功能中的可选参数

问题描述

我对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");

希望这对您有所帮助。如果您有任何疑问,请告诉我。