2017-05-09 98 views
-3

新程序员在这里,我只是想了一会儿。看看这个举例来说,就是它们之间的区别:返回函数vs void函数设置变量

static void Main(string[] args) 
{ 
    Program obj = new Program(); 
    Console.WriteLine(Convert.ToString(obj.Add())); 
} 
int Add() 
{ 
    return 1 + 1; 
} 

int Sum; 
static void Main(string[] args) 
{ 
    Console.WriteLine(Convert.ToString(Sum)); 
} 

void Add() 
{ 
    Sum = 1+1; 
} 

回答

1

第一案执行方法Add并打印返回值2到控制台。

第二种情况不能编译,因为Sum是一个类变量,你缺少像在访问它的第一种情况的对象引用。

如果您要使Sumstatic那么您的Main将工作,并打印简单的默认值Sum这是0。既然你从来不打电话给Add方法。

至于两个Add()方法的区别:
第二种情况使用类变量并对其进行处理。必须调用它以便Sum的值发生变化。

第一种情况只使用本地计算和不改变类中的任何东西。它只是返回一个计算

结果

编辑:

什么是两者之间的区别,这将是最好?

它在你打算做什么强烈依赖。如果唯一感兴趣的是1+1的结果,并且您需要使用某种方法(如Main)使用此结果,则使用第一种情况。

如果变量表示的类的这样一个显著特点:

public class BillsToPay 
{ 
    public int Sum; 

    List<int> Bills = new List<int>() {3,5,6,7}; 

    public void CalculateAllBills() 
    { 
     foreach (var bill in Bills) 
     { 
      Sum = Sum + bill; 
     } 
    } 
} 

那么你将有它操作类变量Sum,并更新其状态的方法。所以第二个版本开始了。但它总是如何处理特定问题的味道和意图的混合物。

小测试程序:

static void Main(string[] args) 
{  
    BillsToPay btp = new BillsToPay();  
    btp.CalculateAllBills();   
    Console.WriteLine(Convert.ToString(btp.Sum));  
} 
+0

我明白了。所以这个: ' int Sum; static void Main(string [] args) void Add(); Console.WriteLine(Convert.ToString(Sum)); } 空隙添加() { 萨姆= 1 + 1; } ' 应该返回2吗?道歉的相当愚蠢的问题 –

+0

@MatthysFourie我重写了我的答案。 –

+0

啊,是的,我只是在记事本中写的代码,我的编译器应该选择了。另一个问题是,如果你能做到,你如何在代码中使用代码?感谢您的帮助。 –