如何使函数不关心C#中缺少的参数

时间:2012-12-06 21:11:57

标签: c# function console-application

  

可能重复:
  How can you use optional parameters in C#?

我正在进行文字冒险,并使用我在网上找到的一些代码,我有打字机式打印。所以我在一个函数中有这个代码,除了传递代码进行类型化之外,我还试图传递类型之间的延迟。现在我的问题是我并不总是想要延迟参数,我尝试搜索int变量的默认值,看看是否使用if语句检查变量是否不是默认值,如果是不是默认它会使用传入的内容。除了它仍然无法工作,它仍然希望我传递一些东西。他们无论如何要让它发挥作用吗?

对不起,如果我的问题令人困惑,我不是最擅长制作非混淆的句子......(见?)

4 个答案:

答案 0 :(得分:1)

您可以使用Optional Arguments

public void MovePerson(int x, int y, int delay = 300) 
{

}

在这个完全构成的函数中,如果在调用函数时没有指定值,则可以构建默认延迟,该延迟将设置为300.

MovePerson(10, 20);  //Delay for 300
MovePerson(10, 20, 100); //Delay for 100

答案 1 :(得分:0)

public void Task (String optional = "default") {
   ...
}

答案 2 :(得分:0)

只需使用默认参数

int Multiply (int a = 10, int b = 20)
{
    return a * b;
}

或者您也可以重载函数

int Multiply ()
{
    return 10 * 20;
}
int Multiply (int a, int b)
{
    return a * b;
}

答案 3 :(得分:0)

解决此问题的传统方法是使多个方法重载。这是一个例子:

public class Foo
{
    public void Bar(string value)
    {
        Console.WriteLine(value);
    }

    public void Bar()
    {
        Bar("I have no value :(");
    }
}

您可以拨打Bar("hello world")Bar(),并使用默认值。

C#已经引入了语法糖,这使得这更容易,因为它是如此常见的模式,通过使用可选参数:

public void Bar(string value = "I have no value :(")
{
    Console.WriteLine(value);
}

这将最终以(大致)相同的方式工作,但更容易输入。