TOC

This article has been localized into Chinese by the community.

基础知识:

方法

方法允许您封装一段代码并从代码的其他部分调用它。 您可能很快就会遇到需要从多个位置重复一段代码的情况,这就是方法的用武之地。在C#中,它们基本上是这样声明的:

<visibility> <return type> <name>(<parameters>)
{
<function code>
}

要调用一个方法,只需写出它的名字,一个左括号,然后是参数,如果有的话,然后是一个右括号,如下所示:

DoStuff();

这是我们的DoStuff()方法的例子:

public void DoStuff()
{
    Console.WriteLine("I'm doing something...");
}

第一部分,public,是可见性,是可选的。 如果您没有定义,那么该方法将是私有的。 稍后会详细介绍。 接下来是要返回的类型。 它可以是C#中的任何有效类型,或者正如我们在此处所做的那样,void。 void表示此函数不返回任何内容。 此外,这个方法没有参数,你可以从空的括号中看到,所以它其实有点无聊。 让我们改变一下:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    return result;
}

我们几乎改变了一切。 该方法现在返回一个整数,它接受两个参数(两个整数),不输出某些东西,它进行计算,然后返回结果。 这意味着我们可以在代码中的不同位置对两个数字做加法运算,只需调用此函数,而不必每次都编写计算代码。 虽然我们不会在这个小例子中节省那么多时间和精力,相信你使用C#越多就越爱用方法。 这个函数被调用如下:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

如上所述,这个函数实际上返回了一些东西,因为我们告诉C#它应该这样做。 当声明除void之外的任何东西作为返回类型时,强迫我们自己返回一些东西。 您可以尝试从上面的示例中删除返回行,并看到编译器抱怨:

“AddNumbers(int, int)”: 并非所有的代码路径都返回值

编译器提醒我们,虽然我们承诺,但我们有一个不返回内容的函数。 编译器非常聪明! 不要删除该行,尝试这样的事情:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
}

您将看到完全相同的错误 - 但为什么? 因为无法保证我们的if语句将评估为true并且返回行正在执行。 您可以通过在结尾处使用第二个默认类似的return语句来解决此问题:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
    return 0;
}

这将解决我们自己制造的的问题,它还会向您显示我们的函数中可以有多个return语句。 一旦到达return语句,该函数就会完成,并且不再执行其中的代码。 在这种情况下,这意味着只要结果大于10,就永远不会执行“return 0”。

This article has been deprecated!

This article has been re-organized and updated to better match the rest of the tutorial.

We suggest that you read this article instead: Methods (functions)


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!