返回函数vs void函数设置变量

时间:2017-05-09 07:18:20

标签: c#

这里的新程序员,我只想了一会儿。比如看看这个,这些有什么区别?:

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 个答案:

答案 0 :(得分:1)

第一种情况执行方法Add并将返回值2打印到控制台。

第二种情况不会编译,因为Sum是一个类变量而你缺少一个对象引用,就像在第一种情况下一样来访问它。

如果您要Sum static,那么您的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));       
}