1

可能重复:
如何在 C# 中使用可选参数?

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

对不起,如果我的问题令人困惑,我不是最擅长制作非令人困惑的句子......(看到了吗?)

4

4 回答 4

1

您可以使用可选参数

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

}

在这里,在这个完全组成的函数中,如果您在调用函数时未指定值,您可以构建一个默认延迟,该延迟将设置为 300。

MovePerson(10, 20);  //Delay for 300
MovePerson(10, 20, 100); //Delay for 100
于 2012-12-06T21:14:32.950 回答
0
public void Task (String optional = "default") {
   ...
}
于 2012-12-06T21:13:50.740 回答
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;
}
于 2012-12-06T21:15:43.303 回答
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);
}

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

于 2012-12-06T21:16:07.960 回答