C# 了解退货类型的基本知识

C# 了解退货类型的基本知识,c#,C#,为什么返回类型很重要?我知道它是什么,但为什么我需要使用它?如果我可以使用void,但仍然得到相同的结果,为什么我要显式地告诉代码,从而告诉计算机返回特定的类型 是不是为了让电脑不被弄糊涂?例如: public class Son { string chair = "Wood"; int room = 1; public Son { } public void CleanHouse() { //Do some chores } public int CleanHouse

为什么返回类型很重要?我知道它是什么,但为什么我需要使用它?如果我可以使用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还是特定于返回类型的,那么我为什么需要它呢?

返回值通常用于以下原因之一

  • 查询或计算产生的值(例如fnAdd(A,b) 返回一个和(浮点、整数等)

  • 更新的状态(例如array.join()返回一个新的数组,其中包含更新的 元素)

  • 行动的结果:成功或失败(booleen,或失败 代码)


返回值通常用于以下原因之一

  • 查询或计算产生的值(例如fnAdd(A,b) 返回一个和(浮点、整数等)

  • 更新的状态(例如array.join()返回一个新的数组,其中包含更新的 元素)

  • 行动的结果:成功或失败(booleen,或失败 代码)


因为函数返回可以作为其他函数的输入,而静态类型语言允许程序员通过定义所有输入和输出类型来确保其设计逻辑的正确性,从而确保它们彼此匹配。

因为函数返回可以作为其他函数的输入函数和静态类型语言允许程序员定义所有输入和输出类型,从而确保它们彼此匹配,从而确保其设计逻辑的正确性。

一个方法的返回类型并不是了解其功能的最佳方式。我们可以有各种不同的方法来实现这一点但它们都有相同的返回类型

返回类型也不能决定该方法的用途,即打扫房间或清洁椅子

让我们看看这个:

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.
有两种情况,都是有效的

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

我们怎么知道这个方法是做什么的?如果它是我们自己的方法,那么我们就知道它是做什么的。如果我们能看到它,那么我们就可以阅读它,看看它是做什么的。但这两种方法都不理想。下一个人可能不象我们一样了解我们的代码,他们可能不想阅读所有的代码来了解它是做什么的。因此,一种交流方法是做什么的方法es是给它起一个好名字,说明它的功能。(然后确保该方法确实做到了这一点,而不是其他东西。)


这里是另一个有效的场景。也许我们称之为
Son.CleanHouse()
,但实际上我们不想知道他是打扫房间还是椅子。这可能是一件非常好的事情。这意味着在
Son
类中有逻辑来确定要清洁什么以及如何清洁。调用
Son.CleanHouse()的代码
不需要知道这种逻辑。这可以防止应用程序的各个部分混淆在一起。一个类知道如何做某事。另一个类告诉它做什么,但不知道另一个类如何做。这很好


如果不需要返回值,则不返回任何内容。如果
Son
将要
CleanHouse
,并且调用代码不需要确切知道清理了什么,则返回值没有意义

CleanHouse
可能会返回一个
CleaningResults
对象,该对象详细说明已清理的内容,但如果调用代码不知道清理的详细信息,那么它会如何处理该信息

如果重点是确保特定房间得到清洁,那么这将更有意义:

void CleanRoom(int roomId);
如果我们关心哪个房间被打扫,那么我们就告诉它打扫那个房间


无论如何,这不是一条规则,而是一条建议:如果一个类可以在没有其他类告诉它该做什么或者没有得到关于到底做了什么的详细结果的情况下处理它的责任,那就好了。这意味着我们的类之间的耦合性稍低,对其他类正在做的事情的意识稍低。有时,他们需要更多地分享方法的返回类型并不是了解其作用的最佳方式。我们可以有各种各样的方法来做不同的事情,但都有相同的返回类型

返回类型也不能决定该方法的用途,即打扫房间或清洁椅子

让我们看看这个:

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.
有两种情况,都是有效的

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

我们如何知道这个方法的作用?如果它是我们自己的方法,那么我们就知道它的作用。如果我们可以看它,那么我们就可以阅读它,看看它是什么