C#方法,返回

C#方法,返回,c#,C#,所以基本上我刚开始学习C#昨天我有机会学习了一些方法,我有点困惑返回值是如何有用的,或者它们的作用是什么,我知道在一个包含void作为关键字的方法中不能有返回值,我知道void的意思是“不做任何事情或不返回任何东西”差不多吧 很清楚,空虚意味着这一点 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespa

所以基本上我刚开始学习C#昨天我有机会学习了一些方法,我有点困惑返回值是如何有用的,或者它们的作用是什么,我知道在一个包含void作为关键字的方法中不能有返回值,我知道void的意思是“不做任何事情或不返回任何东西”差不多吧

很清楚,空虚意味着这一点

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            Add(2,2);
        }

        static int Add(int numberOne, int numberTwo)
        {
            Console.WriteLine(numberOne + numberTwo);
            return numberOne + numberTwo;

        }
    }
}
“returnnumberOne+numberTwo”在这段代码中有什么用处,我有点卡住了,我有一个思维障碍,为什么我需要返回当我运行此代码时,我得到了一些信息(4)

为什么在这段代码中我也得到了一些东西(“我在一个方法中,做了一些很棒的事情!”),并且我没有在最后使用关键字return,我不知道我是否解释得足够好(抱歉,如果我不知道英语不是我的第一语言)但我只需要一个基本的、很好的解释,说明收益是如何有用的,它们的用途是什么,何时使用它们,何时不使用它们

感谢您……

调用该方法:

DoSomethingAwesome();
在主
程序中
,结果是写下以下句子:

"I'm inside of a method, doing something awesome!"
因为
DoSomethingAwesome
方法将此值打印到控制台,即使它不返回任何值(它是
void
方法)

该方法执行此操作,而不考虑它不返回值的事实,因为您调用了它。如果要将其值用作返回字符串,则应如下所示:

    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("I'm about to go into a method.");

            string result = DoSomethingAwesome();

            Console.WriteLine("I'm back from the method.");
        }

        static string DoSomethingAwesome()
        {
            return "I'm inside of a method, doing something awesome!";
        }
    }

方法的返回类型声明调用方应该期望的内容。当使用
void
返回类型声明一个方法时,这意味着不会从中返回任何内容,因此您不需要使用
void
方法中的
return
语句(因为您不返回任何内容)

在以下情况下,您有:

static int Add(int numberOne, int numberTwo)
{
    Console.WriteLine(numberOne + numberTwo);
    return numberOne + numberTwo;

}
这意味着方法
Add
向调用它的人返回一个整数

从主函数调用:

Add(2,2);
这意味着您正在调用函数,但没有对结果执行任何操作(只是将其丢弃)。相反,要:

int result = Add(2, 2);
返回的整数(本例中为4)存储在
结果中,因此您可以执行以下操作:

Console.WriteLine("The method returned {0}", result);

方法需要返回以从中获取数据。 在
int c=a+b
的情况下,您可以像您的方法
静态int-Add(int-a,int-b)
一样考虑这个问题,它将被写成
int c=Add(a,b)

为了从方法中获取新值,该方法需要能够向调用者返回一个值,在这种情况下,调用者将被分配到
c

这些方法的全部目的是分离出代码中经常使用的部分,或者将大块代码分割成更小、更容易理解的块


我建议看一下。

这里的问题非常基本,而且不仅仅与C有关,事实上几乎每种编程语言都在方法中使用
return

基本上表示您希望退出方法执行。现在,当您有一个
void
方法时,该方法不会从执行中返回值。除了void之外,方法还可以返回所需的任何类型

下面是一个基本示例
void
方法

class Program
{
    static void Main()
    {
        Calculate(1 , 2);
    }

    static int c = 0;

    static void Calculate(int a, int b)
    {
        c = a + b;
    }

}
现在,在我的
Calculate
方法中,我将字段
c
的值设置为
a+b
之和。这是基本的,但是void方法不是返回值而是修改值(
c

这可以写成:

class Program
{
    static void Main()
    {
        c = Calculate(1 , 2);
    }

    static int c = 0;

    static int Calculate(int a, int b)
    {
        return a + b;
    }

}
哪里会注意到我的
Calculate
方法现在返回一个
int
,它是
a+b
的总和。这将从调用方法分配给
c

现在为什么要使用这两种情况。在第一个例子中,方法
Calculate()
知道哪个变量应该保存该方法的结果。因此,它将
c
设置为总和。在第二个示例中,
Calculate
方法仅返回
a+b
之和

现在转到一个更复杂的例子。假设我们构建了一个计算器类,其职责是管理计算

class Calculator
{
    int sum = 0;

    public void Add(int a)
    {
        sum += a;
    }

    public void Subtract(int a)
    {
        sum -= a;
    }

    public int GetTotal()
    {
        return sum;
    }
}
可用于:

static void Main()
{
    var calculator = new Calculator();
    calculator.Add(5);
    calculator.Subtract(10);
    int total = calculator.GetTotal();
}
同样基本,但现在我们有3种方法<代码>添加
减去
获取总计
Add
Subtract
都是无效方法,因为它们在
sum
字段上执行操作。其中,
GetTotal
return
ing总和


希望这能有所帮助。

IMO,当我想修改方法上下文中的内容时,我基本上使用返回类型的方法,然后只返回输出,当我想设置其他地方可以访问的内容(全局变量等)时无效@oneWhisper。。。埃德·黑斯廷斯()如果你阅读的话会很有帮助。如果有一天你不是新手,如果你创建了另一种语言,也许你可以省略
return
表达式?
static void Main()
{
    var calculator = new Calculator();
    calculator.Add(5);
    calculator.Subtract(10);
    int total = calculator.GetTotal();
}