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()方法,每个参数组合都可以通过.(这使得编写单独的功能变得如此繁琐).
谢谢.
你可以这样做,但你必须知道函数中的参数类型.
public static void Show(params object[] values)
{
if(values[0] == "something")
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |