有没有更简单的方法为C#中的方法创建重载?

naw*_*fal 4 c# syntax overloading argument-passing

这是一个普遍的编程疑问,而不是具体的.但我会用一个例子说明.假设我正在创建一个自己的MessageBox类,并且我希望.Show()用21个重载来实现方法.我可以这样做,如下所示.

public static void Show(string x){}
public static void Show(int x){}
public static void Show(param x){}
public static void Show(param2 x){}
public static void Show(string x, param y){}
.
.
.
.
public static void Show(param x, param y){}
Run Code Online (Sandbox Code Playgroud)

编写21种这样的方法变得非常麻烦.有没有更简单的方法来做到这一点?就像是,

public static void Show(string x, string y, int i, param p, ...... param21st z)
{
    if (//see the arguments and decide)
        //do stuff ignoring rest of the arguments;
    else if (//passed arguments are of these type)
        //then do this stuff.
    else if (so and so)
        // so and so.
}
Run Code Online (Sandbox Code Playgroud)

注意:1.我知道可以有一些参数,如果它不会使我的单个函数如此之大,以至于它可能超过单独编写的21个不同函数的大小.不.在我的情况下,单独编写是一个更大的麻烦,考虑到我需要在函数下执行的是非常简单的(只是该函数可能需要大量的参数).此外,这个问题也是要了解不同的编码技术.2.我理解我正在寻找的简洁风格有其缺点,就我而言,它是我为自己创造的业余爱好计划.因此可用性并不重要.只是我需要执行.Show()方法,每个参数组合都可以通过.(这使得编写单独的功能变得如此繁琐).

谢谢.

Mag*_*nus 5

你可以这样做,但你必须知道函数中的参数类型.

public static void Show(params object[] values)
{
   if(values[0] == "something")
   //Do stuff
}
Run Code Online (Sandbox Code Playgroud)