2017-03-06 91 views
-4

所以基本上我刚刚开始学习C#,昨天我有机会了解方法,我有点困惑如何返回有用或他们是什么,我知道你不能有一个返回一个具有void作为关键字的一部分的方法,我知道void表示“不做任何事或不返回任何东西”类似的东西。C#方法,返回

那么知道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; 

     } 
    } 
} 

如何是在此代码“返回的Numberone + numberTwo”有用的,我有点卡住了,我有心理障碍,为什么我需要的回报。 当我运行这段代码我得到的东西(4)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.IO; 
using System.Net; 

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

      DoSomethingAwesome(); 

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

     static void DoSomethingAwesome() 
     { 
      Console.WriteLine("I'm inside of a method, doing something awesome!"); 
     } 
    } 
} 

为什么在这段代码我也有东西(“我是一个方法里面,做一些真棒!”),我不使用关键字返回在最后,我不知道我是否足够好地解释自己(对不起,如果我不英语不是我的第一语言),但我只需要一个基本的和很好的解释如何返回有用,它们是什么,什么时候使用它们,何时不使用它们。

谢谢...

+0

IMO,我基本上使用返回类型的方法,当我想修改我的方法的上下文中的东西,然后只是返回输出,当我想设置可在其他地方访问的东西(全局变量,等等)时,Void不能使用@oneWhisper – Barak

+0

@oneWhisper。 ** ** Ed Hastings **(http://softwareengineering.stackexchange.com/questions/180804/what-is-the-reason-behind-methods-with-return-values-and-methods-with-void)将如果你阅读有帮助。 –

+0

也许你可以省略'return'表达式,如果你创建另一种语言,如果你有一天不是新手? –

回答

0

调用方法:

DoSomethingAwesome(); 

在你的主Program,结果在写句子:

"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!"; 
     } 
    } 
0

方法的返回值类型声明什么呼叫者应该期待。当使用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在这种情况下)存储在result,所以你可以做:

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

方法需要回归到获取数据了出来。 在int c = a + b的情况下,你可以认为这就像你的方法static int Add(int a, int b),这将被写成int c = Add(a, b)

为了获得新的价值的方法的,该方法需要能够值回来电者,在这种情况下,然后被分配到c

方法的全部重点是分离出经常使用的代码部分,或将大块代码分割成更小,更容易理解的块。我建议看一下Documentation

0

这里的问题是相当基本的,不仅仅涉及到C#,事实上几乎所有的编程语言都在方法中使用return

基本上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种方法。 AddSubtractGetTotalAddSubtract都是无效的方法,因为它们在sum字段上执行操作。其中GetTotalreturn

希望这会有所帮助。