了解返回类型的基础

时间:2019-05-06 15:07:58

标签: c#

为什么返回类型很重要?我知道它是什么,但是为什么需要使用它?如果我可以使用void并仍然得到相同的结果,为什么我要明确地告诉代码并因此让计算机返回特定类型?

是不是这样,计算机不会感到困惑?例如:

public class Son
{ 
 string chair = "Wood";
 int room = 1;
 public Son
 {
 }
 public void CleanHouse()
 {
   //Do some chores
 }
 public int CleanHouseAgain()
 {
  //Do some chores
  return room;
 }
}
static void Main()
{
  Son.CleanHouse(); //without a return type I don't know what you want
   //So I'll will just clean something and hope that is what you wanted clean.
   //Son ends up cleaning a chair.

  Son.CleanHouseAgain(); //I have a return type int which is called room. Got it!
}

我确定这是可怕的代码,但这不是重点,我只是想想象一下返回类型对计算机的作用以及为什么需要它。我编写的代码可以进行数学计算,无论是void还是返回特定于类型的代码,都得到相同的答案,那为什么我需要它?

3 个答案:

答案 0 :(得分:1)

出于多种原因之一,通常使用返回值。

  • 由查询或计算得出的值(例如fnAdd(a,b) 返回总和(浮点数,整数等)。

  • 更新后的状态(例如array.join()返回具有更新后的新数组 元素)

  • 操作的结果:成功或失败(失败或失败) 代码)

答案 1 :(得分:1)

方法的返回类型不是知道其作用的最佳方法。我们可以有各种各样的方法可以做不同的事情,但是都有相同的返回类型。

返回类型也不能决定方法的作用-即打扫房间或打扫椅子。

让我们看看这个:

Son.CleanHouse(); //without a return type I don't know what you want
  //So I'll will just clean something and hope that is what you wanted clean.
  //Son ends up cleaning a chair.

有两种情况,都有效。

一个是我们要儿子打扫房间,而不是椅子。在这种情况下,我们应该有两种方法CleanRoomCleanChair。告诉我们该方法做什么的不是返回类型。正是我们对我们期望该类做什么的知识告诉我们该方法的作用。如果我们还不知道该方法的作用,那么就没有理由调用它了。我们不会调用它,获取返回值,然后确定是否应该调用它。

我们如何知道该方法的作用?如果这是我们自己的方法,那么我们知道它的作用。如果我们可以看一下它,那么我们可以阅读它,看看它的作用。但是这些都不是理想的。下一个人可能不像我们一样了解我们的代码,他们可能不想阅读全部内容以弄清楚它的作用。因此,传达一种方法的作用的一种方法是给它一个能说明方法作用的好名字。 (然后确保该方法确实做到了这一点,而不是其他事情。)


这是另一个有效的方案。也许我们叫Son.CleanHouse(),但实际上我们不想知道他是否打扫房间或椅子。那真的是一件好事。这意味着确定要清除什么以及如何清除的逻辑在Son类中。调用Son.CleanHouse()的代码不需要了解该逻辑。这样可以避免应用程序的各个部分混杂在一起。一堂课知道如何做某事。另一个类告诉它做什么,但不知道另一个类如何做。很好。


如果不需要返回值,则不返回任何内容。如果Son即将到达CleanHouse,并且调用代码不需要确切知道要清除的内容,那么返回值就没有意义。

CleanHouse可以返回一个CleaningResults对象,该对象详细说明了要清除的内容,但是如果调用代码不知道要清除的细节,那么它将如何处理该信息?

如果要确保清洁特定房间,那将更有意义:

void CleanRoom(int roomId);

如果我们关心打扫哪个房间,那么我们告诉它打扫那个房间。

这绝不是一个规则,而是一个建议:如果一个类可以在没有其他类告知其做什么或获得确切结果的情况下处理其职责,那很好。这意味着我们的课程之间的耦合度降低了一点,对其他人正在做什么的意识也有所降低。有时他们需要分享更多的信息,但如果可以的话,限制他们分享的数量可能是有益的。

答案 2 :(得分:0)

因为函数返回可以作为其他函数的输入,并且静态类型化的语言允许程序员通过定义所有输入和输出类型来确保其设计逻辑不变,因此他可以确保它们互相匹配。